django4.2表单验证规则问题?
自定义了一个表单验证类,但是在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
回答:
def register(request): if request.method == 'POST':
form = registerForm(request.POST)
if form.is_valid():
# 如果表单有效,保存数据
pass
else:
# 如果表单无效,检查哪个字段出错,并停止其他验证
if 'UserName' in form.errors:
# 如果用户名验证失败,停止其他验证
return render(request, 'register.html', {'form': form})
elif 'Email' in form.errors:
# 如果邮箱验证失败,停止其他验证
return render(request, 'register.html', {'form': form})
elif 'VerifyCode' in form.errors:
# 如果验证码验证失败,停止其他验证
return render(request, 'register.html', {'form': form})
else:
form = registerForm()
return render(request, 'register.html', {'form': form})
以上是 django4.2表单验证规则问题? 的全部内容, 来源链接: utcz.com/p/938945.html