全局、局部钩子用法
局部钩子用来实现name单个标签中的敏感字符检查
全局钩子用来实现password多个标签的密码一致性校验
class form_view(forms.Form):name = forms.CharField(required=True, # 输入不能为空label="姓名:", # 页面上的input框名字initial="张三", # 框里的默认值help_text="输入姓名", # 帮助文本min_length=6,error_messages={"min_length":"长度最少6位","required":"输入值不能为空!"},widget=forms.widgets.TextInput())password = forms.CharField(label="密码:",min_length=8,max_length=10,error_messages={"min_length": "长度最少8位","max_length":"长度最多10位" ,"required": "输入值不能为空!"},widget=forms.widgets.PasswordInput() # 秘文输入)r_password = forms.CharField(label="确认密码:",min_length=8,max_length=10,error_messages={"min_length": "长度最少8位","max_length":"长度最多10位" ,"required": "输入值不能为空!"},widget=forms.widgets.PasswordInput() # 秘文输入)# 局部钩子def clean_name(self):value = self.cleaned_data['name']if '中国' in value:raise ValidationError("含有敏感词汇: 中国")else:return value# 全局钩子def clean(self):value = self.cleaned_datap1 = value['password']p2 = value['r_password']if p1 != p2:self.add_error('r_password','两次输入不一致') # 给某个字段添加报错信息self.add_error('password','两次输入不一致')raise ValidationError("error") # 没用但是得写 raise

