RegexValidator校驗器:django
在自定義的form組件類設置字段validators的值,引入RegexValidator模塊app
from django import forms函數
from django.core.validators import RegexValidatorui
from django.core.exceptions import ValidationErrorspa
class Myform(forms.Form):orm
name = forms.CharField(對象
# required=True, # 默認爲Trueget
min_length=2,it
max_length=6,io
initial='abc', # 默認值
help_text='長度爲2到6個字符!', # 幫助信息
error_messages=[{ # 自定義錯誤提示信息(默認爲英文)
'required': '不能爲空!',
'min_length': '不能少於2個字符!'
}],
validators=[RegexValidator(r'^(\w)+$','用戶名只能有字母數字下劃線組成!'),],
# disabled=True#默認爲True顯示
)
email = fields.EmailField(required=False,
error_messages={'required': u'郵箱不能爲空','invalid': u'郵箱格式錯誤'},
widget=widgets.TextInput(attrs={'class': "form-control", 'placeholder': u'郵箱'}))
from django.shortcuts import render,HttpResponse
from django import forms
from app01 import models
from django.core.validators import RegexValidator
import re
from django.core.exceptions import ValidationError
#自定義校驗函數,直接在字段validators中使用
def name_valid(value):
name_re=re.compile(r'^[a-zA-Z_]+$')
if not name_re.match(value):
raise ValidationError("只能以字母下劃線開頭!")
class Myform(forms.Form):
name = forms.CharField(
# required=True, # 默認爲True
min_length=2,
max_length=6,
initial='abc', # 默認值
help_text='長度爲2到6個字符!', # 幫助信息
error_messages=[{ # 自定義錯誤提示信息(默認爲英文)
'required': '不能爲空!',
'min_length': '不能少於2個字符!'
}],
validators=[RegexValidator(r'^(\w)+$','用戶名只能有字母數字下劃線組成!'), name_valid],
# 自定義校驗規則(列表中放自定義函數名,或者引入django內置的RegexValidator校驗器,能夠混合使用)
)
自定義類實例化返回值對象的is_valid()方法調用:
(1)字段規則校驗
(2)validators校驗(RegexValidator校驗器或自定義校驗函數)
(3)局部鉤子(類中定義的以clean_字段名命名的函數,校驗正常必須返回該字段的值self.cleaned_data.get('name'))
(4)全局鉤子(類中定義的函數名clean,校驗正常必須返回該對象的校驗結果值return self.cleaned_data)
(5)每一步經過校驗單結果都以字典形式保存在類對象的cleaned_data屬性中