Django(part46)--form表单验证(django form)

网友投稿 336 2022-08-31


Django(part46)--form表单验证(django form)

学习笔记,仅供参考

文章目录

​​form表单验证​​

​​举个例子​​

form表单验证

form提供表单和字段验证,我们可以使用​​form.is_valid()​​ 方法进行表单验证,若该方法返回值为True,则表示当前表单合法,若返回值为False,则说明表单验证出现问题。

注意!这里,以及下面的form指的是forms.Form类的对象。

举个例子

我们基于上一个Blog里的mywebsite_bookstore项目,举一个例子来学习form表单验证。

如果我们没有进行表单验证操作,那么,当我们进行注册时,姓名可以填写任意格式和任意长度的数据,这显然不符合一般的填写要求,且不方便我们处理:

为了使用户规范的填写注册信息,我们需要进行表单验证,即不按照规范进行信息填写,就注册不成功

在userinfo应用下的views.py模块中,我们对视图函数test_form进行修改,增加一个表单验证功能:

def test_form(request): if request.method == "GET": myform = forms.RegForm() #创建对象 return render(request, 'userinfo/test_form.html', locals()) elif request.method == "POST": myform = forms.RegForm(request.POST) if myform.is_valid(): #检验表单中数据是否合法 print(myform.cleaned_data) #输出表单类中所有属性值组成的字典 return HttpResponse("

表单提交成功!


" + str(myform.cleaned_data)) else: return HttpResponse("

表单数据验证失败!

")

注意!若想要​​myform.is_valid()​​方法返回True,则需要下面3个条件同时验证成功:

对​​forms.xxxField()​​​方法中的参数值进行验证,验证成功返回None,验证失败抛出​​forms.ValidationError​​异常对​​form.clean_属性名(self)​​​方法中的​​属性​​​进行验证,验证成功返回​​属性值​​​,验证失败抛出​​forms.ValidationError​​异常对​​form.clean(self)​​​方法(表单的整体结构)进行验证,验证成功返回​​self.cleaned_data​​​,验证失败抛出​​forms.ValidationError​​异常

现在,我们编辑forms.py,添加两个方法,进行验证:

# -*- coding: utf-8 -*-from django import formsclass RegForm(forms.Form): username = forms.CharField(label = "输入昵称") password = forms.CharField(label = "输入密码", widget=forms.PasswordInput) passwordRepeat = forms.CharField(label = "再次输入密码", widget=forms.PasswordInput) tele = forms.CharField(label = "手机号", required = False) email = forms.CharField(label = "邮箱", required = False, widget=forms.EmailInput) # def clean_username(self): #对单个属性进行检验 username = self.cleaned_data["username"] if (len(username) < 6) | (len(username) > 12): raise forms.ValidationError("用户名必须在6~12个字符之间!") return username def clean(self): #属性之间进行检验(整体检验) pwd1 = self.cleaned_data["password"] pwd2 = self.cleaned_data["passwordRepeat"] if pwd1 != pwd2: raise forms.ValidationError("两次输入不一致!") return self.cleaned_data

注意,views.py模块中test_form视图方法里的​​is_valid()​​​方法会自动调用​​clean_username​​​函数和​​clean​​函数。

我们向http://127.0.0.1:8000/userinfo/test_form/发起请求,并填写符合要求的注册信息:


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Django(part47)--文件上传(django 上传下载文件)
下一篇:Django(part45)--forms模块(django setting)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~