编写Django的form表单,非常类似我们在模型系统里编写一个模型。在模型中,一个字段代表数据表的一列,而form表单中的一个字段代表<form>中的一个<input>元素。
form.is_vaild() 是一个内置的验证方法,用于接收到的表单数据的验证
使用步骤:
1、编写表单类
首先,在你当前app内新建一个forms.py文件(这个套路是Django的惯用手法,就像views.py,models.py等等)
要点:首先导入forms,from django import forms 所有的表单类都继承自forms.Form
每个表单字段都有自己的字段类型比如CharField,它们分别对应一种HTML语言中的<form>元素中的表单元素。
2、视图处理 需要在视图中,实例化我们编写好的表单类。
首先还是要导入forms.py模块
form=Nameform() #实例化一个表单类 return render(request,'template.html',{'form':form}) #发送到模版
3、模版处理
{{ form}} 如此简单的一句就可以加载form实例中的所有字段
注意:form字段与html元素的对应关系
例子:
form:your_name = forms.CharField(label='Your name', max_length=100)
html:<label for="your_name">Your name: </label>
<input id="your_name" type="text" name="your_name" maxlength="100" required />
可以看到:id对应字段名称,name对应字段名称,type对应字段类型field
高级技巧:
1、表单字段 每一个字段都对应一个<input>type类型
Charfiled 对应type='text' 文本输入框
emailfield 邮箱输入框
···还有许多其他的
模板(template中的)渲染:
{{form as_p}} 每个字段渲染成一个<p></p> 表单无
{{form as_table}} 每个字段渲染成一个<tr></tr> 表单渲染成<table></table>
{{form as_ul}} 每个字段渲染成一个<li></li> 表单渲染成<ul></ul>
2、单个字段使用并渲染
{{ form.field_name}} 直接通过调用表单对应的字段即可
另外{{ form.name_of_field.errors }} 是一个form表单类实例的内置属性,返回错误信息
还有其他的内置属性{{ form.字段名.label }} 字段对应的label信息
3、不可见字段的处理{{hidden}} 例子:
{% for hidden in form.hidden_fields %}
{{ hidden }}
{% endfor %}
4、重用表单模版 使用场景:如果某些表单经常使用,那么可以存为表单文件html 然后加载即可
如果你的页面同时引用了好几个不同的表单模板,那么为了防止冲突,你可以使用with参数,给每个表单模板取个别名with form=xxx.form
{% include 'form.html' with form=xxx.form %}