案例程序:
<!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‘)