[TOC=1,5] >[success] # form 属性 >[danger] ##### use_required_attribute 去除浏览器验证 ~~~ class TestForm(forms.Form): use_required_attribute = False ~~~ >[success] # 常用属性展示 ~~~ class TestForm(forms.Form): use_required_attribute = False user = fields.CharField( max_length=12,#最大长度 min_length=12,#最小长度 #empty_value = "111", required = True, # 是否必须填 error_messages={},#错误信息 #widget = widgets.Select(),#定义HTML插件 #widget = widgets.Select(attrs={'class':'tss'}),#加属性 label='用户名' ,#定义label标签显示内容 使用方法:{{ obj.user.label }} #initial='xx',#设置默认值,在input默认展示值 help_text='帮助文档',#在html 后显示文字 使用方法{{ obj.user.help_text }} show_hidden_initial= True, # 生成一个隐藏的文本框用来记录 <input type="hidden" name="initial-user" value="xx" id="initial-id_user"> #validators=[],#自定义验证规则 #localize = Flase, #是否支持本地化 # disabled=True, #是否可编辑,默认Flase 可编辑 #label_suffix=':'#在调用as_p as_table 等时在 label加符号,如果没设置lable 就默认字段 ) ~~~ >[danger] ##### required 是否必须填 >判断表单内容是否可以为空 >[danger] ##### invalid 格式是否正确 ~~~ 例如 邮箱格式 的files 自带邮箱验证判断 ~~~ >[danger] ##### error_messages参数让你覆盖字段引发的异常中的默认信息 >判断覆盖k和设置字段一一对应,例如上面的required判断是否为空 {'required': '不能为空', 'invalid': '格式错误'},使用的写法 ~~~ name = forms.CharField(error_messages={'required': 'Please enter your name'}) ~~~ >[danger] ##### label 是否必须填 >定义label标签显示内容 使用方法:{{ obj.user.label }} >[danger] ##### initial -- 默认值 >initial='xx',#设置默认值,在input默认展示值,也可传入对象initial=datetime.date.today,在未绑定表达使用,比在绑定表单时get请求时,传入的字典,不会触发form表单判断机制 >[danger] ##### widget 定义select ~~~ widget = widgets.Select(),#定义HTML插件 widget = widgets.Select(attrs={'class':'tss'}),#加属性 ~~~ >[danger] ##### help_text ~~~ help_text='帮助文档',#在html 后显示文字 使用方法{{ obj.user.help_text }} ~~~ >[danger] ##### validators自定义验证规则 ~~~ from django.core.exceptions import ValidationError from django.utils.translation import gettext_lazy as _ def validate_even(value): if value % 2 != 0: raise ValidationError( _('%(value)s is not an even number'), params={'value': value}, ) # 自定义 验证方法 from django.db import models class MyModel(models.Model): even_field = models.IntegerField(validators=[validate_even]) ~~~ >[danger] ##### disabled是否可编辑 ~~~ disabled=True, #是否可编辑,默认Flase 可编辑 ~~~ >[danger] ##### show_hidden_initia ~~~ show_hidden_initial= True, # 生成一个隐藏的文本框用来记录<input type="hidden" name="initial-user" value="xx" id="initial-id_user"> ~~~ >[danger] ##### 正则验证 首先导入from django.core.validators import RegexValidator 用validators属性编辑正则,用列表封装RegexValidator,在里面写验证格式和报错信息,他们的错误提示都会被封装在invalid中 ~~~ from django.core.validators import RegexValidator phone = fields.CharField( validators=[RegexValidator(r'^[0-9]+$',"请输入数字"), RegexValidator(r'^159[0-9]+$','数字必须159开头')] ) ~~~ >[danger] ##### 利用RegexField 只能一个正则匹配 ~~~ phone1 = fields.RegexField(r'^[0-9]+$') ~~~