Django入门六之 (Form表单)

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 //不返回也可以
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章