企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
[TOC=1,5] >[success] # FORM 后台做字段验证 form 和ajax 序列话,他们所遵守的键值对关系都是,html标签的name 属性,作为K来进行匹配 >[success] # 只利用Form 做判断 应用场景,当前端人员已经编写完html代码的时候,后台人员在后台做对应的字段验证使用这种方法 >[danger] ##### 编写Form 验证类 * 在app 目录中创建一个py文件,分别import `from django.forms import Form` `from django.forms import fields` ~~~ from django.forms import Form from django.forms import fields class loginFrom(Form): user = fields.CharField(max_length=12,required=True) pwd = fields.CharField(max_length=22) ~~~ >[danger] ##### views.py 引入form做验证 * obj1= account.loginFrom(request.POST) 这是引入的自定义的form类,注意参数接收的request.POST,request.POST里面封装的是,html 以name为键值对的字典,这样就可以和form我们自定义的名字形成关联验证 * obj1.is_valid() 验证是否符合form规则0. * obj1.cleaned_data 清洗后的数据也是字典格式 ~~~ from django.shortcuts import render,redirect from . import models from . import account # Create your views here. def login(request): if request.method == "GET": print("views") return render(request,'login.html',{"obj":""}) elif request.method == "POST": obj1 = account.loginFrom(request.POST) valid = obj1.is_valid() if valid: print(obj1.cleaned_data) obj = models.userinfo.objects.filter(**obj1.cleaned_data) if obj: request.session['is_login'] = True return redirect('/index.html') return render(request,'login.html',{"obj":obj1}) ~~~ >[danger] ##### html * 返回错误信息显示下面案例两个区别当有多个错误, * 第一个返回的是,这个字段得到所有的错误信息 * 第二个返回的是 ~~~ {{ obj.errors.user }} {{ obj.errors.user.0 }} ~~~ >[success] # Form html代码生成和验证 >[danger] ##### 编写Form 验证类 * 在app 目录中创建一个py文件,分别import `from django.forms import Form` `from django.forms import fields` ~~~ from django.forms import Form from django.forms import fields class loginFrom(Form): user = fields.CharField(max_length=12,required=True) pwd = fields.CharField(max_length=22) ~~~ >[danger] ##### views 生成及验证 * GET请求时生成 因为django_form表单都已经提前生成了标签,所以要做的就是,创建生成的form对象下面的例子的中的user_form = UserForm() * POST请求时 在这里使用第二个特性可以验证表单,因此把我们request.post传入创建的验证表单中,因为他本身返回的就是字典,form表单生成的标签name属性也是和创建的类属性名一致。 然后利用is_valid()判断字段是否符我们写的判断需求,符合需求返回True cleaned_data会吧符合需求的数据封装成字典传入给数据库 如果is_valid()为假,那么会把用户填的数据再返还,同时出现错误信息 ~~~ def add_user(reuqest): if reuqest.method == "GET": user_form = UserForm() return render(reuqest,'adduser.html',{'user_form':user_form}) elif reuqest.method == "POST": user_form = UserForm(reuqest.POST) if user_form.is_valid(): UserData = user_form.cleaned_data ''' models.UserInfo.objects.create( usernmae = UserData['username'], email = UserData['email'] ) ''' models.UserInfo.objects.create(**UserData) return redirect('/index/') else: return render(reuqest, 'adduser.html', {'user_form': user_form}) ~~~ >[danger] html ~~~ <form method="post" action="/add_user/" novalidate> {% csrf_token %} <p>{{ user_form.usernmae }}{{ user_form.errors.usernmae.0 }}</p> <p>{{ user_form.email }}{{ user_form.errors.email.0 }}</p> <input type="submit"> </form> ~~~