简短理解:后端提供了一个类:from django import forms,继承此类定义子类。子类中定义和form表单中提交到name名称一样的字段。django就可以帮做验证。验证后返回三个信息:是否通过;所有正确信息;所有错误信息。
例如:
自己写前端html后端Form类进行验证
views.py
from django.shortcuts import render, HttpResponse from django.views import View # Create your views here. from django import forms # 用来验证前端post提交过来数据的类 class MyFm(forms.Form): username = forms.CharField() pwd = forms.CharField() email = forms.EmailField() # 请求处理 class FormTest(View): def get(self, request): return render(request, ‘fm.html‘) def post(self, request): # 获取所有数据 # 每条数据请求的验证 # 成功显示正确信息 # 失败,给出错误提示 # 验证时将request.POST 传递给验证类,实例化验证对象 verify_obj = MyFm(request.POST) # 开始验证,返回True/False verify_result = verify_obj.is_valid() return HttpResponse(verify_result)
对应html
verify_obj = MyFm(request.POST)
django中的Form一般有两种功能:
Form 对象生成html标签写法
views.py
from django.shortcuts import render, HttpResponse from django.views import View # Create your views here. from django import forms # 用来验证前端post提交过来数据的类 class MyFm(forms.Form): username = forms.CharField() pwd = forms.CharField() email = forms.EmailField() # 请求处理 class FormTest(View): def get(self, request): verify_obj = MyFm() return render(request, ‘fm.html‘, {‘verify_obj‘:verify_obj})
fm.html
<form action="/formtest/" method="post"> {% csrf_token %} <p>{{ verify_obj.username }} {{ verify_obj.errors.username.0 }}</p> <p>{{ verify_obj.pwd }} {{ verify_obj.errors.pwd.0 }}</p> <p>{{ verify_obj.email }} {{ verify_obj.errors.email.0 }}</p> <input type="submit" value="提交"> </form>
django渲染后html
<form action="/formtest/" method="post"> <input type="hidden" name="csrfmiddlewaretoken" value="WhvU9JWIRIuk8Mjq0JJ1xCnId1ek6Rbee8kVgzyA0oHhUSIK3qZPu76opft70DPa"> <p><input type="text" name="username" required id="id_username"> </p> <p><input type="text" name="pwd" required id="id_pwd"> </p> <p><input type="email" name="email" required id="id_email"> </p> <input type="submit" value="提交"> </form>
原文:https://www.cnblogs.com/zhangmingda/p/13368361.html