自定义了一个表单验证类,但是在django中当我clean_UserName这个方法执行了并抛出异常的时候,其他的验证方法还会继续执行,怎么才能在一个验证方法抛出异常后其他的方法都中止执行呢?
class registerForm(forms.Form):
UserName = forms.CharField(required=True,max_length=15,min_length=3,error_messages={
'required':'用户名不能为空',
'max_length':'用户名长度不能大于15个字母',
'min_length':'用户名长度不能小于3个字母'
})
Password = forms.CharField(required=True,max_length=15,min_length=3,error_messages={
'required':'密码不能为空',
'max_length':'密码不能大于15个字母',
'min_length':'密码长度不能小于3个字母'
})
Email = forms.CharField(required=True,error_messages={
'required':'邮箱不能为空',
})
VerifyCode = forms.CharField(required=True,error_messages={
'required':'验证码不能为空',
})
def clean_UserName(self):
UserName = self.cleaned_data.get('UserName')
user = User.objects.filter(username=UserName).exists()
if user:
raise ValidationError('用户名已经存在')
return UserName
def clean_Email(self):
Email = self.cleaned_data.get('Email')
user = User.objects.filter(email=Email).exists()
pattern = r'^[\w\.-]+@[\w\.-]+\.\w+$'
if not re.match(pattern, Email):
raise ValidationError('邮箱格式错误')
elif user:
raise ValidationError('邮箱已存在')
return Email
def clean_VerifyCode(self):
VerifyCode = self.cleaned_data.get('VerifyCode')
user = models.VerifyCode.objects.filter(VerifyCode=VerifyCode).exists()
if not user:
raise ValidationError('验证码错误')
return VerifyCode