Django 开发学习笔记(8)- 开发表单页面,让用户添加内容
2017-09-10 02:10
621 查看
这一节,我们添加表单项,让用户可以选择自己输入数据。这一节的代码几乎都是模板代码,如果一开始不理解的话,照着抄就可以了。
1、在应用路径下新建 forms.py 文件,输入以下代码
知识点:
(1)最简单的 ModelForm 类只包含了一个内嵌的 Meta 类,它的作用是告诉 Django 使用哪个模型创建表单,以及在表单中包含哪些字段;
(2)
表示,我们根据模型 Topic 创建表单;
(3)
表示,该表单只包含字段“text”
2、配置 urls
3、配置 views
知识点:
(1)
(2)不要忘记掉写
函数
4、配置模板 new_topic.html
知识点:
(1)模板标签
(2)模板变量
修饰符
(3)记住模板标签和模板变量长什么样。
在话题列表页面,添加新话题的链接。
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 %}
相关文章推荐
- Django 开发学习笔记(7)- 开发特定主题显示的页面
- 【学习笔记】Web开发中防止页面刷新后表单重复提交,表单Token设置示例
- iOS学习笔记39-iOS开发,谓词(NSPredicate)的用法:(二)谓词和正则表达式配合使用,进行表单内容判断
- Django学习笔记2 模板继承、添加页面
- Django学习笔记3 用ModelForm创建基于表单的页面
- Django 开发学习笔记(6)- 开发博客主页和所有话题列表页面
- Django 开发学习笔记(3)- 编写自定义的页面
- CAD二次开发学习笔记三(封装添加实体到数据库函数)
- servlet学习笔记2——同一用户的不同页面共享数据
- php学习笔记:第八节--表单和用户输入,$_GET,$_POST
- iPhone开发学习笔记005——使用XIB自定义一个UIView,然后将这个view添加到controller的view
- 菜鸟的jquery学习笔记,jquery输入框添加默认值,jquery提交表单,jquery获取字符串长度,并截取字符串
- 我的iphone开发学习笔记(九): 使用NSUserDefaults读写用户默认设置
- 黑马程序员之WinForm编程基础学习笔记:页面上有一张图片,默认是隐藏的,用户在文本框中输入身份证号(131226198105223452),点击按钮,如果年龄大于18岁则显示图片。
- Sharepoint学习笔记—Ribbon系列-- 5. 在Ribbon中添加新控件(针对用户自定义Tab)
- iPhone开发学习笔记003——UITableViewCell内容自适应高度
- 【django 学习笔记】13-会话、用户和注册
- SharePoint开发学习笔记4——使用aspx自定义表单的工作流(1)
- {传智播客} (学习笔记)--JQuery_实现添加用户
- iPhone开发学习笔记003——UITableViewCell内容自适应高度