创新互联www.cdcxhl.cn八线动态BGP香港云服务器提供商,新人活动买多久送多久,划算不套路!
小编给大家分享一下django处理表单的方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!
使用表单
假设你想从表单接收用户名数据,一般情况下,你需要在HTML中手动编写一个如下的表单元素:
一、编写表单类
我们可以通过Django提供的Form类来自用生成上面的表单,不再需要手动在HTML中编写。
首先,在你当前app内新建一个forms.py文件(这个套路是Django的惯用手法,就像views.py,models.py等等),然后输入下面的内容:
from django import forms class NameForm(forms.Form): your_name = forms.CharField(label='Your name', max_length=100)
提前导入forms模块所有的表单类都要继承forms.Form类每个表单字段都有自己的字段类型比如CharField,它们分别对应一种HTML语言中的
每个Django表单的实例都有一个内置的is_valid()方法,用来验证接收的数据是否合法。如果所有数据都合法,那么该方法将返回True,并将所有的表单数据转存到它的一个叫做cleaned_data的属性中,该属性是以个字典类型数据。
当我们将上面的表单渲染成真正的HTML元素,其内容如下:
Your name:
二、视图处理
需要在视图中,实例化我们编写好的表单类。
# views.py from django.shortcuts import render from django.http import HttpResponseRedirect from .forms import NameForm def get_name(request): # 如果form通过POST方法发送数据 if request.method == 'POST': # 接受request.POST参数构造form类的实例 form = NameForm(request.POST) # 验证数据是否合法 if form.is_valid(): # 处理form.cleaned_data中的数据 # ... # 重定向到一个新的URL return HttpResponseRedirect('/thanks/') # 如果是通过GET方法请求数据,返回一个空的表单 else: form = NameForm() return render(request, 'name.html', {'form': form})
要点是:
对于GET方法请求页面时,返回空的表单,让用户可以填入数据;
对于POST方法,接收表单数据,并验证;
如果数据合法,按照正常业务逻辑继续执行下去;
如果不合法,返回一个包含先前数据的表单给前端页面,方便用户修改。
通过表单的is_bound属性可以获知一个表单已经绑定了数据,还是一个空表。
三、模板处理
在Django的模板中,我们只需要按下面处理,就可以得到完整的HTML页面:
要点:
使用POST的方法时,必须添加{% csrf_token %}标签,用于处理csrf安全机制;
{{ form }}代表Django为你生成其它所有的form标签元素,也就是我们上面做的事情;
提交按钮需要手动添加!
提示:默认情况下,Django支持HTML5的表单验证功能,比如邮箱地址验证、必填项目验证等等。
看完了这篇文章,相信你对django处理表单的方法有了一定的了解,想了解更多相关知识,欢迎关注创新互联-成都网站建设公司行业资讯频道,感谢各位的阅读!