您的位置:首页 > 编程语言 > Go语言

Django 开发学习笔记(8)- 开发表单页面,让用户添加内容

2017-09-10 02:10 621 查看
这一节,我们添加表单项,让用户可以选择自己输入数据。这一节的代码几乎都是模板代码,如果一开始不理解的话,照着抄就可以了。

1、在应用路径下新建 forms.py 文件,输入以下代码

from django import forms

from blog.models import Topic

class TopicForm(forms.ModelForm):
class Meta:
model = Topic
fields = ['text']
labels = {'text':'请输入话题内容'}


知识点:

(1)最简单的 ModelForm 类只包含了一个内嵌的 Meta 类,它的作用是告诉 Django 使用哪个模型创建表单,以及在表单中包含哪些字段;

(2)

model = Topic


表示,我们根据模型 Topic 创建表单;

(3)

fields = ['text']


表示,该表单只包含字段“text”

2、配置 urls

# 用于添加新主题的网页
url(r'^new_topic/$', views.new_topic, name='new_topic')


3、配置 views

def new_topic(request):
"""添加新主题"""
if request.method != 'POST':
# 未提交数据,创建一个新表单
form = TopicForm()
else:
# POST 提交的数据,对数据进行处理
form = TopicForm(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect(reverse('learning_logs:topics'))
context = {'form': form}
return render(request, 'blog/new_topic.html', context)


知识点:

(1)
HttpResponseRedirect
:用户提交了主题以后,我们将使用这个类将用户重定向到网页 ‘learning_logs:topics’;

(2)不要忘记掉写
reverse('learning_logs:topics')
中的 reverse。

函数
reverse()
根据指定的 URL 模型确定 URL,这意味着 Django 将在页面被请求时生成 URL。

4、配置模板 new_topic.html

{% extends "blog/base.html" %}

{% block content %}

<form action="{% url 'blog:new_topic' %}" method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">提交</button>
</form>
{% endblock content %}


知识点:

(1)模板标签
{% csrf_token %}
:来防止攻击者利用表单来获得对服务器未经授权的访问,这种攻击被称为“跨站请求伪造”;

(2)模板变量
{{ form.as_p }}
:我们显示表单,从中可以知道 Django 使得完成显示表单的任务有多简单:我们只需要包含模板变量
{{ form.as_p }}
,就可以让 Django 自动创建显示表单所需的全部字段。

修饰符
as_p
让 Django 以段落的格式渲染所有的表单元素,这是一种整洁地显示表单的简单方式;

(3)记住模板标签和模板变量长什么样。

在话题列表页面,添加新话题的链接。

{% extends 'blog/base.html' %}

{% block content %}

<ul>
{% for topic in topics %}
<li>
<a href="{% url 'blog:topic' topic.id %}">{{ topic }}</a>
</li>

{% empty %}
<li>话题没有被创建。</li>

{% endfor %}
</ul>

<a href="{% url 'blog:new_topic' %}">添加新的话题</a>

{% endblock content %}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python django
相关文章推荐