CharField 文本框
InterFile 数值框
DateField 参数input_formats设置时间格式
TimeField
DateTimeField
RegexField 文本框,判断是否与参数regex设置的正则表达式匹配
EmailField
FileField 文件上传框 max_length设置文件名最大长度,all_empty_file设置是否文件大小可以为空
ImageFild 文件上传控件 验证是否是可以pillow识别图片格式
FilePathField 文件选择控件 path必选参数
URLField 文本框
BooleanField
ChoiceField 参数choice以元组形式表示
共同的参数:
required
widget 设置控件的颜色
initial 设置表单的初始值
hepl_text 设置帮助提示信息
disabled 设置是否可编辑
localize 设置本地化
error_messages 设置错误信息,比如error_messages = {'required':'不能为空'}
数据清洗方式:
widget是一个forms.widgets对象,用于设置CSS颜色,,比如在字段中设置
password = forms.CharField(label='密码',
min_length=8,
max_length=16,
error_messages={
'min_length':'密码长度不能少过8个字符',
'max_length':'密码长度不能超过16个字符'
},
widget=forms.PasswordInput())
或者在字段外设置 widgets = {
'decs':forms.Textarea,
'color':ColorRadioSelect(attrs={'class':'color-radio'})
}
error_messages字典形式写
validators 自定义函数
mobile_phone = forms.CharField(label='手机号',validators=[RegexValidator(r'^(1|2|3|4|5|6|7|8|9)\d{6,11}$','手机格式错误'),])
def clear_属性名(self):pass
data
is_valid()
errors()
as_table()
as_ul()
as_p()
instance 初始化数据
save() 保存数据
特色定义属性
model:绑定Modle对象
fields:可选属性'__all__'
exclude
怎么修改默认样式
class WikiModelForm(bootstrap, forms.ModelForm):
class Meta:
model = models.Wiki
exclude = ['project', 'depth',]
def __init__(self, request, *args, **kwargs):
super().__init__(*args, **kwargs)
"""如果像把某个字段数据重置,先找到这个字段,然后重置"""
total_data_list = [("", "请选择"),]
# 找到想要的指端数据
data_list = models.Wiki.objects.filter(project=request.tracer.project).values_list('id', 'title')
total_data_list.extend(data_list)
# 进行修改
self.fields['parent'].choices = total_data_list
Bootstrap怎么设置
class bootstrap(object):
bootstrap_class_exclude = []
def __init__(self,*args,**kwargs):
super().__init__(*args, **kwargs)
for name,filed in self.fields.items():
if name in self.bootstrap_class_exclude:
continue
odl_attrs = filed.widget.attrs.get('class', "")
filed.widget.attrs['class'] = '{} form-control'.format(odl_attrs) # 添加属性
filed.widget.attrs[''] = '请输入%s'%(filed.label,)