error_messages
=
None
validators
=
[]
- 自定義驗證規則方式一:
-
from django import forms from django.forms import fields from django.forms import widgets from django.core.validators import RegexValidator class DetailForm(forms.Form): inp = fields.Field( #表單輸入必須是數字,並且數字必須是159開頭 validators=[RegexValidator(r'^[0-9]+$', '請輸入數字'), RegexValidator(r'^159[0-9]+$', '數字必須以159開頭')], )
-
- 自定義驗證規則方式二:
-
from django import forms from django.forms import fields from django.forms import widgets import re from django.core.exceptions import ValidationError #定義驗證規則的函數 def mobile_validate(value): mobile_re = re.compile(r'^(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57])[0-9]{8}$') if not mobile_re.match(value): raise ValidationError('手機號碼格式錯誤') class DetailForm(forms.Form): # 使用自定義驗證規則 inp = fields.Field(validators=[mobile_validate, ], error_messages={'required': '手機不能為空'}, widget=widgets.TextInput(attrs={'placeholder': u'手機號碼'}))
-
- 自定義驗證規則方式三:
-
from django import forms from django.forms import fields from django.forms import widgets from django.core.exceptions import ValidationError from django.core.validators import RegexValidator class DetailForm(forms.Form): inp = fields.Field( validators=[RegexValidator(r'^[0-9]+$', '格式錯誤', 'invalid')], ) #二次驗證函數的名字是固定寫法,以clear_開頭,后面跟上字段的變量名 def clean_inp(self): #通過了validators的驗證之后,在進行二次驗證 value = self.cleaned_data['inp'] if "123" in value: raise ValidationError('內容不符合要求', 'invalid') #通過了二次驗證之后,返回表單數據,通過value_dic = obj.clean()能夠得到驗證通過后的表單數據 return value
-
- 自定義錯誤
-
from django import forms from django.forms import fields from django.forms import widgets from django.core.validators import RegexValidator class DetailForm(forms.Form): inp = fields.Field( #error_messages中的err1與RegexValidator中的code='err1'對應 #error_messages的優先級高,如果表單輸入的不是數字,會提示 '類型不符合要求' validators=[RegexValidator(r'^[0-9]+$', '請輸入數字', code='err1'), RegexValidator(r'^159[0-9]+$', '數字必須以159開頭', code='err2')], error_messages={'err1': '類型不符合要求', 'err2': '格式不符合要求'} )
-