Django之from.Form内置字段
from django import forms
Field |
|
|
|
required=True, |
是否允许为空 |
|
widget=None, |
HTML插件 |
|
label=None, |
用于生成Label标签或显示内容 |
|
initial=None, |
初始值 |
|
help_text='', |
帮助信息(在标签旁边显示) |
|
error_messages=None, |
错误信息 {'required': '不能为空', 'invalid': '格式错误'} |
|
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, |
小数位长度 |
|
input_formats=None |
时间格式化 |
ChoiceField(Field) |
单选 |
|
|
choices=(), |
选项,如:choices = ((0,'上海'),(1,'北京'),) |
|
required=True, |
是否必填 |
|
widget=None, |
插件,默认select插件 |
|
label=None, |
Label内容 |
|
initial=None, |
初始值 |
|
help_text='', |
帮助提示 |
ModelChoiceField(ChoiceField) |
单选,通过orm操作读取数据 |
|
|
queryset, |
# 查询数据库中的数据(类中必须定义__str__方法) |
|
empty_label="---------", |
# 默认空显示内容 |
|
to_field_name=None, |
# HTML中value的值对应的字段 |
|
limit_choices_to=None |
# ModelForm中对queryset二次筛选 |
MultipleChoiceField(ChoiceField) |
多选 |
|
ModelMultipleChoiceField(ModelChoiceField) |
多选,通过orm操作读取数据,类似单选 |
|
FileField(Field) |
|
|
|
allow_empty_file=False 是 |
否允许空文件 |
EmailField(CharField) |
邮箱 |
|
ImageField(FileField) |
|
|
|
注:需要PIL模块,pip3 install Pillow |
|
|
以上两个字典使用时,需要注意两点: |
- form表单中 enctype="multipart/form-data" - view函数中 obj = MyForm(request.POST, request.FILES) |
RegexField(CharField) |
正则 |
|
|
regex, |
自定制正则表达式 |
|
max_length=None, |
最大长度 |
|
min_length=None, |
最小长度 |
|
error_message=None, |
忽略,错误信息使用 error_messages={'invalid': '...'} |
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'] |
TypedChoiceField(ChoiceField) |
|
|
|
coerce = lambda val: val |
对选中的值进行一次转换 |
|
empty_value= '' |
空值的默认值 |
TypedMultipleChoiceField(MultipleChoiceField) |
|
|
|
coerce = lambda val: val |
对选中的每一个值进行一次转换 |
|
empty_value= '' |
空值的默认值 |
FilePathField(ChoiceField) |
文件选项,目录下文件显示在页面中 |
|
|
path, |
文件夹路径 |
|
match=None, |
正则匹配 |
|
recursive=False, |
递归下面的文件夹 |
|
allow_files=True, |
允许文件 |
|
allow_folders=False, |
允许文件夹 |
|
required=True, |
|
|
widget=None, |
|
|
label=None, |
|
|
initial=None, |
|
|
help_text='' |
|
ComboField(Field) |
|
|
|
fields=() |
使用多个验证,如下:即验证最大长度20,又验证邮箱格式 |
GenericIPAddressField |
|
|
|
protocol='both', |
both,ipv4,ipv6支持的IP格式 |
|
unpack_ipv4=False |
解析ipv4地址,如果是::ffff:192.0.2.1时候,可解析为192.0.2.1, PS:protocol必须为both才能启用 |
MultiValueField(Field) |
PS: 抽象类,子类中可以实现聚合多个字典去匹配一个值,要配合MultiWidget使用 |
DateField(BaseTemporalField) |
格式:2015-09-01 |
TimeField(BaseTemporalField) |
格式:11:12 |
DateTimeField(BaseTemporalField) |
格式:2015-09-01 11:12 |
DurationField(Field) |
时间间隔:%d %H:%M:%S.%f |
SlugField(CharField) |
数字,字母,下划线,减号(连字符) |
UUIDField(CharField) |
uuid类型 |
URLField(Field) |
|
BooleanField(Field) |
|
NullBooleanField(BooleanField) |
|
BaseTemporalField(Field) |
|