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
回复
1个回答

test
2024-06-30
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})
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容