1.前段form表单代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Login</title> </head> <body> <form action="/login/" method="post"> {% csrf_token %} <span>用户名</span><input type="text" name="user"> <br> <span>邮箱</span><input type="text" name="email"> <br> <span>密码</span><input type="text" name="password"> <br> <input type="submit"> </form> </body> </html>
2.后台数据Python代码对前端的form表单数据进行校验
from django.shortcuts import render, HttpResponse, redirect
from django import forms
# Create your views here.
class Login(forms.Form):
user = forms.CharField(min_length=6, error_messages={'required': '用户名不能为空', 'min_length': '用户名不能小于6位'})
email = forms.EmailField(error_messages={'required': '邮箱不能为空', 'invalid': '邮箱格式错误'})
#此处未定义password,会导致下面的Login对象在接收前台数据时,只接收user数据和password数据
def login(request):
if request.method == 'GET':
return render(request, 'login.html')
else:
obj = Login(request.POST)
if obj.is_valid():#is_valid()用于判断obj对象是否校验通过,校验通过传回true
value_list = obj.clean()#clean()用于获取obj中已校验通过的数据
print(value_list)
#create(**value_list)#可直接将获取到的对象的值通过该方式插入到数据库中
else:
error_obj = obj.errors.as_json()#获取校验失败的信息
print(error_obj)
return redirect('/login')