Django-website 程序案例系列-16 modle.form(表单验证)
Posted 划得戳
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django-website 程序案例系列-16 modle.form(表单验证)相关的知识,希望对你有一定的参考价值。
案例程序:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form action="/fm/" method="POST"> #3个输入框分别是user/pwd/email {% csrf_token %} <input type="text" name="user" /> <input type="text" name="pwd" /> <input type="text" name="email" /> <input type="submit" value="提交" /> </form> </body> </html>
views函数:
from django import forms # 首先需导入forms包 class FM(forms.Form): #建立一个验证类 user = forms.CharField(error_messages={\'required\': \'用户名不能为空\'}) #自定制的中文错误返回 pwd = forms.CharField( max_length=\'12\', min_length=\'8\', error_messages={\'required\': \'密码不能为空\', \'max_length\': \'密码最大长度不能大于12\', \'min_length\': \'密码最小长度不能小于8\'} ) email = forms.EmailField(error_messages={\'required\': \'邮箱不能为空\', \'invalid\': \'邮箱格式错误\'}) def fm(request): if request.method == "GET": return render(request, \'fm.html\') elif request.method == "POST": # 获取用户的所有数据 # 每条数据请求的验证 # 成功:获取所有的正确信息 # 失败:显示错误信息 obj = FM(request.POST) #生成一个表单验证类 r1 = obj.is_valid() #验证输出的结果 成功为true 错误为false print(r1) if r1: print(obj.cleaned_data) #如果成功返回验证好的数据并打印 else: print(obj.errors.as_json) #如果失败返回错误信息打印 return redirect(\'/fm/\')
显示的信息:
达到了自定制返回的错误信息为中文的目的
向前端送出验证错误信息:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form action="/fm/" method="POST"> <p><input type="text" name="user" /> {{ obj.errors.user.0 }} </p> #前端显示验证错误信息 <p><input type="text" name="pwd" /> {{ obj.errors.pwd.0 }} </p> <p><input type="text" name="email" /> {{ obj.errors.email.0 }} </p> <input type="submit" value="提交" /> </form> </body> </html>
def fm(request): if request.method == "GET": obj = FM() return render(request, \'fm.html\', {\'obj\': obj}) # 传送一个验证数据对象obj elif request.method == "POST": # 获取用户的所有数据 # 每条数据请求的验证 # 成功:获取所有的正确信息 # 失败:显示错误信息 obj = FM(request.POST) r1 = obj.is_valid() print(r1) if r1: print(obj.cleaned_data) else: print(obj.errors) return render(request, \'fm.html\', {\'obj\': obj}) return render(request, \'fm.html\')
完整的注册页面的简单表单验证加注册:
def fm(request): if request.method == "GET": obj = FM() return render(request, \'fm.html\', {\'obj\': obj}) elif request.method == "POST": obj = FM(request.POST) r1 = obj.is_valid() if r1: models.UserInfo.objects.create(**obj.cleaned_data) #直接一条语句数据注册成功 else: return render(request, \'fm.html\', {\'obj\': obj}) return render(request, \'fm.html\')
使用forms类生成字段和html标签:
from django.forms import widgets # widgets是生成html标签的插件 from django.forms import fields # 在定义forms类时建议最好使用fields来表示字段 class FM(forms.Form): user = fields.CharField(error_messages={\'required\': \'用户名不能为空\'}, # 自定义错误 widgets=widgets.Textarea(attrs={\'class\': \'c1\'}),#调用插件widgets 然后生成Textarea标签(多行文本输入框) 然后添加属性attrs(class=c1) ) pwd = fields.CharField( max_length=\'12\', min_length=\'8\', error_messages={\'required\': \'密码不能为空\', \'max_length\': \'密码最大长度不能大于12\', \'min_length\': \'密码最小长度不能小于8\'}, widgets=widgets.PasswordInput(attrs={\'class\': \'c2\'}), #调用插件widgets 然后生成PasswordInout标签(多行文本输入框) 然后添加属性attrs(class=c2)
) email = fields.EmailField(error_messages={\'required\': \'邮箱不能为空\', \'invalid\': \'邮箱格式错误\'})
生成的标签:
以上是关于Django-website 程序案例系列-16 modle.form(表单验证)的主要内容,如果未能解决你的问题,请参考以下文章
Django-website 程序案例系列-6 html模板文件详解
Django-website 程序案例系列-4 ORM数据库操作