form表单获取
from django import forms
Django 中的表单 不是 HTML中的表单,用于验证用户表单输入的内容是否符合实际的标准,也可以在html中生成(不建议)
requests.POST.get(表单name名称,None)
requests.POST.getlist(复选框name名称,None)
1 需要在每一个app下创建forms.py(并不是强制的)
2 表单是通过类实现的,继承自forms.Form
3 创建字段跟模型是一模一样的 但是没有null=True或者blank=True 唯一有的参数是required=True/False //可以为空为False
常用field:
auth(requests.POST) 如果有文件需要加上requests.FILES
max_length 最大长度
min_length 最小长度
required True为必添
EmailField 邮箱验证
ImageField 图片类型
FileField() 上传文件 //需要在model里面定义upload_to=''
DateField 验证时间 默认格式 %Y-%m-%d
FloatField 验证是否时浮点数
IntegerField 验证是否满足整形
URLField 验证是否满足url类型的字符串
图片 或者 文件 需要
settings里面设置MEDIA_ROOT设置保存文件位置,
html页面增加enctype="multipart/form-data"
注意:
表单中的字段 必须要和html form里面的name名字一致!
is_valid() 验证用户提交的数据是否合法 合法True/False
cleaned_date.get 保存用户提交的数据,获取html中name标签对应的数据
示例:
class auth(forms.Form):
username = forms.CharField(max_length=10)
password = forms.CharField(max_length=20)
form = auth(requests.POST)
if form.is_valid(): //验证是否合法
username = form.cleaned_date.get("username") //获取数据
password= form.cleaned_date.get("password")
#表单中的错误
forms.errors 打印表单验证错误信息
forms.errors.as_json 打印表单验证错误 json的格式
#自定义表单错误信息
error_messages={'min_length':'12'}
#添加自定义验证机制
重写方法
def clean_password(self): //识别clean_表名字段
password = self.cleaned_data.get('password',None)
if len(password) < 6:
raise forms.ValidationError(u'password length < 6',code="error")//可选
return password //可返回
涉及到多个field提供了一个方法
def clean(self):
super(auth,self).clean() //写不写,测试是没问题的
cleaned_data = self.cleaned_data
password = cleaned_data.get('password',None)
if len(password) < 6:
self.add_error('某一个field','password not equal')//自定义异常,无需抛
#raise forms.ValidationError('password !!!',code=403)
return cleaned_data //不返回也可以