Form组件
- 对用户请求的验证
- AJax - Form - 生成HTML代码a. 创建一个类
b. 类中创建字段(包含正则表达式) c. GET obj = Fr() obj.user = > 自动生成HTML d. POST obj = Fr(request.POST) if obj.is_valid(): obj.cleaned_data else: obj.errors return .... obj实例:
1 from django.shortcuts import render 2 3 # Create your views here. 4 #1> 导入相应的模块 5 from django import forms 6 from django.forms import fields 7 8 #2》 定义好类 里面的属性应是是name的值 并且 设定好限制 和错误信息 注意所有的格 9 #式错误都应该invalid 字段来设置相应的错误10 class Form_f1(forms.Form):11 user = fields.CharField(max_length=5,min_length=2,required=True,12 error_messages={ 'max_length':'最大值为5',13 'min_length':'最小值为2',14 'required':'这里为必填',15 'invalid': '格式错误'16 }17 )18 age = fields.IntegerField(max_value=100,min_value= 0,required=True,19 error_messages={20 'max_value':'最大值为100',21 'min_value':'最小值为0',22 'required':'不能为空',23 'invalid': '格式错误'24 }25 )26 email= fields.EmailField(required=True,27 error_messages={28 'required':'不能为空',29 'invalid':'格式错误'30 }31 )32 #url处理方法33 def from_f1(request):34 if request.method == 'GET':35 obj = Form_f1() #传实例的对象到前端可以 .属性 , 自动生成name为属性的input标签36 return render(request,'form_f1.html',{ 'obj':obj})37 elif request.method == 'POST':38 #实例化出来的时候把post传过来的数当参数统一传进去39 obj = Form_f1(request.POST)40 #验证是否成功41 if obj.is_valid():42 #获取验证成功的字段信息43 print(obj.cleaned_data)44 else:45 #获取验证失败的错误信息46 print(obj.errors)47 return render(request,'form_f1.html',{ 'obj':obj})
html页面书写:
1 2 3 4 516 17 18表单验证及错识信息 6 7 8
注意:form表单里添加novalidate 可以阻止浏览器报错 而显示我们自已设定的报错信息
小技巧 : 我们在验证的时候可以直接request.POST把用户提交的数据在实例化的时候传进去做验证
我们可以在实例化的时候传一个字典来设定相应key键的默认值 例: obj = UserForm({'username':'小王','age' = 25})