CharField 字符串
EmailField email
GenericIPAddressField IPhtml
requred=True 必填
error_messages 自定义错误信息python
class Alongin(forms.Form): username=forms.CharField(max_length=30) email=forms.EmailField(required=True) ip=forms.GenericIPAddressField(error_messages={'required':('ip地址不能为空'),'invalid':('ip格式错误')})
注意:error_messages 这里 error 没有s
而 type(CheckForm.errors) 的 errorDict字典对象 errors 有sdjango
def form(request): obj=Alongin() #定义1个对象 if request.method=='POST': CheckForm=Alongin(request.POST) print(CheckForm.errors) #输出错误信息 errors
views.pyjson
CheckForm.errors['username'] 获取username 的错误信息 ui
返回<ul class="errorlist"><li>用户名不能为空</li></ul>spa
由于CheckForm.errors 是一个 django.forms.utils.ErrorDict 对象 ,可看作1个字典code
经过CheckForm.errors['username'] 可查看对应 input[name =username] 的错误信息orm
再经过 as_json() 能够看出 列表内部为列表包含的 错误信息 htm
as_json : [{"code": "required", "message": "\u90ae\u7bb1\u4e0d\u80fd\u4e3a\u7a7a" }]对象
即<ul class="errorlist"><li>用户名不能为空</li></ul> 能够看成列表来操做
CheckForm.errors['username'][0] 获取username 的详细错误信息
经过列表取值 xxx[0],能够查看出正确的错误信息:用户名不能为空
html
{{CheckForm.errors.username.0}}
注意: 若是不加.0 的话,返回的是1个 ul 包含的错误信息
<ul class="errorlist"><li>用户名不能为空</li></ul>
而咱们只须要 错误内容,因此推荐加 xxxx.errors.xxxx .0
两次输入密码不同,在第二个密码框提示错误
方法1:add.error(field,error)
def clean(self): cleaned_data = super(FM, self).clean() pwd1 = self.cleaned_data.get('pwd1') pwd2 = self.cleaned_data.get('pwd2') if pwd1 != '' and pwd2 != '' and pwd1 != pwd2: self.add_error('pwd2', error='两次输入的密码不同') #添加自定义错误 else: return cleaned_data
注意,你覆盖的 Form.clean() 引起的任何错误将不会与任何特定的字段关联。它们位于一个特定的“字段”(叫作 __all__ )中,若是须要能够经过non_field_errors() 方法访问。若是你想添加一个特定字段的错误到表单中,须要调用 add_error() 。
方法2:clean_<fieldname>()
def clean_pwd2(self): cleaned_data = super(FM, self).clean() pwd1 = self.cleaned_data.get('pwd1') pwd2 = self.cleaned_data.get('pwd2') if pwd1 != '' and pwd2 != '' and pwd1 != pwd2: raise forms.ValidationError('两次输入密码不一致') #这里不用导入ValidationError else: return cleaned_data['pwd2']
from django.core.exceptions import ValidationError from django.core.validators import RegexValidator from django.core import validators