django4.2表单验证规则问题?

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

回到顶部