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