form 组件

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 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>表单验证及错识信息</title>
 6 </head>
 7 <body>
 8 <form action="from_f1.html" method="post" novalidate> 
 9 {#    obj.user是get的时候传过来的#}
10     <p>{{ obj.user }} <span>{{ obj.errors.user.0 }}</span></p>
11     <p>{{ obj.age }}<span>{{ obj.errors.age.0}}</span></p>
12     <p>{{ obj.email }}<span>{{ obj.errors.email.0 }}</span></p>
13     <p><input type="submit" value="提交"></p>
14 
15 </form>
16 
17 </body>
18 </html>

注意:form表单里添加novalidate 可以阻止浏览器报错 而显示我们自已设定的报错信息

小技巧 : 我们在验证的时候可以直接request.POST把用户提交的数据在实例化的时候传进去做验证

    我们可以在实例化的时候传一个字典来设定相应key键的默认值   例: obj =  UserForm({'username':'小王','age' = 25})

原文地址:https://www.cnblogs.com/qq769080870/p/8920365.html