Django - 自定义Form校验规则
发布时间:2020-12-20 10:37:45 所属栏目:Python 来源:网络整理
导读:自定义Form校验规则 class MyForm(forms.Form): # form可以校验的规则 username = fields.CharField(max_length=32,min_length=3) password = fields.CharField(max_length=32,min_length=3) re_password = fields.CharField(max_length=32,min_length=3) 局
自定义Form校验规则class MyForm(forms.Form): # form可以校验的规则 username = fields.CharField(max_length=32,min_length=3) password = fields.CharField(max_length=32,min_length=3) re_password = fields.CharField(max_length=32,min_length=3) 局部钩子 - 校验用户名不能重复def clean_username(self): # 获取username username = self.cleaned_data['username'] # 判断用户名是否存在 if models.User.objects.filter(username=username).count(): # 存在即不符合规则,必须抛出ValidationError异常 raise ValidationError('该用户名已存在') # 校验通过,则返回清洗后的数据 return self.cleaned_data['username'] 全局钩子 - 检验两次密码输入一致def clean(self): # 获取两次输入的密码 password = self.cleaned_data['password'] re_password = self.cleaned_data['re_password'] # 判断是否相等,相等则返回数据,否则抛出ValidationError异常 if password == re_password: return self.cleaned_data else: raise ValidationError('两次密码输入不一致') # 错误信息放在“__all__”里 注意:全局钩子与局部钩子的函数名、判断异常和返回值都是根据内部源码写的 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |