标签:通过 注意 否则 sel python 用户 self 重复 全局
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__”里
注意:全局钩子与局部钩子的函数名、判断异常和返回值都是根据内部源码写的
1. 函数名为“clean_字段名”或者“clean”
2. 数据校验有误,只能抛ValidationError异常,因为在源码中捕获ValidationError异常
3. 数据校验成功,返回数据
标签:通过 注意 否则 sel python 用户 self 重复 全局
原文地址:https://www.cnblogs.com/bladecheng/p/11565592.html