python django 表单自动化_python自动化之djangoform表单验证

djangoforms表单验证

创建个类,继承于 forms.form

obj = FM(request.post)

obj.is_valid() 如果验证没有问题会返回true,否则会返回false

错误信息会保存在obj.errors里面,如果正确的话数据会返回到cleaned_data,且这是一个字典

初始化数据

dic= {

'user':'r1',

'pwd':'r2',

}

obj = FM(initial=dic)

filed参数

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类型

...

form内置插件

TextInput(Input)

NumberInput(TextInput)

EmailInput(TextInput)

URLInput(TextInput)

PasswordInput(TextInput)

HiddenInput(TextInput)

Textarea(Widget)

DateInput(DateTimeBaseInput)

DateTimeInput(DateTimeBaseInput)

TimeInput(DateTimeBaseInput)

CheckboxInput

Select

NullBooleanSelect

SelectMultiple

RadioSelect

CheckboxSelectMultiple

FileInput

ClearableFileInput

MultipleHiddenInput

SplitDateTimeWidget

SplitHiddenDateTimeWidget

SelectDateWidget

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值