钩子函数实现

一、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
posted @ 2021-06-15 17:39  只管去做-王炸  阅读(140)  评论(0)    收藏  举报