from表单常见的校验方式,常用的 CharField 可以传以下三个参数
- min_length 最小长度
- max_length 最大长度
- required 是否是必填的
对于复杂一点的校验,需要自己写检验器了,比如:判断输入的账号必须是test开头
自定义校验validators在 CharField 传validators参数,传值是一个list,里面是函数对象名称,可以有多个校验函数。
def check_username(value):
"""校验username 以test开头"""
if not str(value).startswith("test"):
raise ValidationError('参数不合法,必须以test开头')
class LoginForm(forms.Form):
"""登录Form表单"""
username = forms.CharField(max_length=20,
min_length=3,
required=True,
label="用户名",
validators=[check_username],
error_messages={
'required': '用户名不能为空',
'min_length': '用户名不能少于3位字符',
'max_length': '用户名不能大于20位字符',
'invalid': '参数不合法,格式错误'
})
password = forms.CharField(max_length=16,
min_length=6,
required=True,
label="密码",
widget=forms.PasswordInput,
error_messages={
'required': '密码不能为空',
'min_length': '密码不能少于6位字符',
'max_length': '密码不能大于16位字符',
})
模板中引用报错
模板中引用errors
<form action="" method="POST" id="login-form" style="text-align:center;">
{% csrf_token %}
{% for field in form_obj %}
<p>
{{ field.label_tag }}
{{ field }}
{{ field.errors }}
</p>
{% endfor %}
<p>
{{ error_msg }}
</p>
<p>
<input type="submit" value="登录" >
</p>
</form>
页面显示效果
EmailField 邮箱格式校验校验输入字符是邮箱格式,可以用 EmailField 字段
username = forms.EmailField(required=True,
label="邮箱",
error_messages={
'required': '用户名不能为空',
'invalid': '格式不合法'
})
error_messages 里面invalid 是邮箱不合法的时候给出报错内容