form 组件

Posted 新手自学

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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})

以上是关于form 组件的主要内容,如果未能解决你的问题,请参考以下文章

maven web项目的web.xml报错The markup in the document following the root element must be well-formed.(代码片段

django—Form组件

Django—分页器与form组件

django之forms组件

微信小程序代码片段

Django框架之Form组件