Form的常用字段校验
一、Field
字段
- required=True, 是否允许为空
- widget=None, HTML插件
- label=None, 用于生成Label标签或显示内容
- initial=None, 初始值
- help_text='', 帮助信息(在标签旁边显示)
- error_messages=None, 错误信息 {'required': '不能为空', 'invalid': '格式错误'}
- show_hidden_initial=False, 是否在当前插件后面再加一个隐藏的且具有默认值的插件(可用于检验两次输入是否一直)
- validators=[], 自定义验证规则
- localize=False, 是否支持本地化
- disabled=False, 是否可以编辑
- label_suffix=None Label内容后缀
二 、CharField(Field)
字段
- max_length=None, 最大长度
- min_length=None, 最小长度
- strip=True 是否移除用户输入空白
三、IntegerField(Field)
字段
- max_value=None, 最大值
- min_value=None, 最小值
四、FloatField(IntegerField)
字段
五、DecimalField(IntegerField)
字段
- max_value=None, 最大值
- min_value=None, 最小值
- max_digits=None, 总长度
- decimal_places=None, 小数位长度
六、BaseTemporalField(Field)
字段
- input_formats=None 时间格式化
- DateField(BaseTemporalField) 格式:2015-09-01
- TimeField(BaseTemporalField) 格式:11:12
- DateTimeField(BaseTemporalField)格式:2015-09-01 11:12
- DurationField(Field) 时间间隔:%d %H:%M:%S.%f
七、RegexField(CharField)
字段
- regex, 自定制正则表达式
- max_length=None, 最大长度
- min_length=None, 最小长度
- error_message=None, 忽略,错误信息使用 error_messages={'invalid': '...'}
八、EmailField(CharField)
字段
九、FileField(Field)
- allow_empty_file=False 是否允许空文件
十、ImageField(FileField)
注:需要PIL模块,pip3 install Pillow
以上两个字典使用时,需要注意两点:
- form表单中 enctype="multipart/form-data"
- view函数中 obj = MyForm(request.POST, request.FILES)
十一、URLField(Field)
十二、BooleanField(Field)
十三、NullBooleanField(BooleanField)
十四、ChoiceField(Field)
- choices=(), 选项,如:choices = ((0,'上海'),(1,'北京'),)
- required=True, 是否必填
- widget=None, 插件,默认select插件
- label=None, Label内容
- initial=None, 初始值
- help_text='', 帮助提示
十五、ModelChoiceField(ChoiceField)
- ... django.forms.models.ModelChoiceField
- queryset, # 查询数据库中的数据
- empty_label="---------", # 默认空显示内容
- to_field_name=None, # HTML中value的值对应的字段
- limit_choices_to=None # ModelForm中对queryset二次筛选
十六、ModelMultipleChoiceField(ModelChoiceField)
- ... django.forms.models.ModelMultipleChoiceField
十七、TypedChoiceField(ChoiceField)
- coerce = lambda val: val 对选中的值进行一次转换
- empty_value= '' 空值的默认值
十八、MultipleChoiceField(ChoiceField)
十九、TypedMultipleChoiceField(MultipleChoiceField)
- coerce = lambda val: val 对选中的每一个值进行一次转换
- empty_value= '' 空值的默认值
二十、ComboField(Field)
- fields=() 使用多个验证,如下:即验证最大长度20,又验证邮箱格式
- fields.ComboField(fields=[fields.CharField(max_length=20), fields.EmailField(),])
二十一、MultiValueField(Field)
- PS: 抽象类,子类中可以实现聚合多个字典去匹配一个值,要配合MultiWidget使用
二十二、SplitDateTimeField(MultiValueField)
- input_date_formats=None, 格式列表:['%Y--%m--%d', '%m%d/%Y', '%m/%d/%y']
- input_time_formats=None 格式列表:['%H:%M:%S', '%H:%M:%S.%f', '%H:%M']
二十三、FilePathField(ChoiceField) 文件选项,目录下文件显示在页面中
- path, 文件夹路径
- match=None, 正则匹配
- recursive=False, 递归下面的文件夹
- allow_files=True, 允许文件
- allow_folders=False, 允许文件夹
- required=True,
- widget=None,
- label=None,
- initial=None,
- help_text=''
二十四、GenericIPAddressField
- protocol='both',(both,ipv4,ipv6支持的IP格式)
- unpack_ipv4=False(解析ipv4地址,如果是::ffff:192.0.2.1时候,可解析为192.0.2.1, PS:protocol必须为both才能启用)
二十五、SlugField(CharField)
- 数字,字母,下划线,减号(连字符)
二十六、UUIDField(CharField)
- uuid类型