概述
文章目录
- 一、初识表单
- 二、表单的使用
- 1.渲染表单
- 2.数据验证
- 三、一般的使用流程
一、初识表单
-
表单模型都继承自
forms.FORM
。 -
Django中的表单本质上也是一个模型,其可用来:
1. 传递给DTL引擎,渲染出前端中的表单;
2. 通过表单模型验证所提交的数据是否合法。
当然,没有表单模型也可以提交数据到后台进行交互;但是使用表单模型可以很方便地进行数据的验证。
表单模型与其他的模型不同,表单模型不会生成表,其内的属性只是用来过滤,不会映射到数据库生成字段。
- 表单模型的字段名需与前端页面中表单组件的
name
属性值相同,才能正确地进行对应验证。
- 需在模板的表单元素中添加一个组件,用以传递csrf验证信息。
<input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}"/>
二、表单的使用
1.渲染表单
1. 在视图函数中实例化定义好的表单类,将表单对象作为一个参数传递给html页面。
2. 在html模板中,使用{{ form.as_table }}
来渲染表单。
- 在模板中的表单对象不一样命名为form,该对象名由视图函数传递参数时指定;
- 需在模板中手动添加
<form></fomr>
标签,DTL渲染时不会添加;
- 在模板中渲染出来的表单不含有提交按钮,需要手动添加。
- 除了
as_table
外,还有as_p
,as_ul
等渲染方法;在使用对应渲染方法时需手动添加外层标签,如as_table
需添加 table 标签。
使用这种方法渲染出来的表单可定制性差,故一般手写前端的form表单,再将表单数据提交到后台,使用表单模型进行验证。
2.数据验证
直接将request
对象POST
属性中的数据(含有请求中通过post方法提交的数据)传入定义的表单类,生成表单对象;再对该表单对象调用is_vaild()
方法进行验证,若成功,则调用表单对象的cleaned_data.get("name")
方法提取所需数据,其中name
值为前端表单组件指定的name属性值。
三、一般的使用流程
- 新建forms.py文件,定义表单模型,其中每个模型均继承自
django.forms.Form
。
实例代码如下:
# forms.py
from django import forms
class MessageBoardForm(forms.Form):
title = forms.CharField(max_length=3,label='标题',min_length=2,error_messages={"min_length":'标题字符段不符合要求!'})
content = forms.CharField(widget=forms.Textarea,label='内容')
email = forms.EmailField(label='邮箱')
reply = forms.BooleanField(required=False,label='回复')
- 在视图函数中,根据请求方式进行相应操作。若为
GET
方法请求当前url,则返回表单页面;若为POST
方法请求,则此时为表单提交,则将提交上来的数据进行处理。
# views.py
class IndexView(View):
def get(self,request):
form = MessageBoardForm()
return render(request,'index.html',{'form':form})
def post(self,request):
form = MessageBoardForm(request.POST)
if form.is_valid():
title = form.cleaned_data.get('title')
content = form.cleaned_data.get('content')
email = form.cleaned_data.get('email')
reply = form.cleaned_data.get('reply')
return HttpResponse('success')
else:
print(form.errors)
return HttpResponse('fail')
- 定义模板,对视图函数传过来的表单对象进行渲染。
<form action="" method="post">
<table>
{{ form.as_table }}
<tr>
<td></td>
<td><input type="submit" value="提交"></td>
</tr>
</table>
</form>
最后
以上就是瘦瘦大白为你收集整理的「Django框架」表单基础的全部内容,希望文章能够帮你解决「Django框架」表单基础所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复