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.(代码片段