钩子函数实现
一、forms组件对用户输入内容进行格式校验
二、局部钩子:Form子类中定义clean_()开头的方法,对1个字段进行校验,校验通过数据以字典形式存在clean_data字段中,错误信息以字典形式存在errors对象中,通过errors.as_data获取错误信息
三、全局钩子:Form子类中重写clean方法,对多个字段字段进行
四、局部钩子优先全局钩子执行
五、局部钩子实例(对用户输入name字段校验):
def clean_name(self):
name = self.cleaned_data.get('name')
if name == 'admin':
raise ValidationError('admin是超级管理员,不能注册!')#这个错误会直接扔进该字段的错误类别中:name.errors
return self.cleaned_data.get('name')
六、全局钩子实例(校验新旧密码是否一致):
def clean(self):
register_dict = self.cleaned_data
if register_dict.get('password') != register_dict.get('r_password'):
self.add_error('r_password', '两次密码不一致!') # 可以使用对象的add_error('字段','错误提示')进行指定
raise ValidationError('密码不一致!')#由于是在全局非字段内校验,这个错误会扔给全局对象self中:self.erors
else:
return self.cleaned_data
浙公网安备 33010602011771号