当前位置: 首页 > 知识库问答 >
问题:

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

陈毅
2023-07-18

自定义了一个表单验证类,但是在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个答案

易星宇
2023-07-18
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})
 类似资料:
  • 我正在用Xtext创建一个DSL,用于生成图像。然而,由于我对Xtext完全不了解,我遇到了一些问题,希望您能给我一些指导。 最终,我希望用户使用以下编码结构: 我在Xtext中想到了以下内容(我没有对MWE2做任何更改): 我需要解决几个问题,但我想知道解决这些问题的最佳方法是什么。 如何为终端规则SIZE中使用的INT设置边界。 如何设置bgColor:或bgsize:只能使用一次? 如何设置

  • 验证规则的定义通常有两种方式,如果你使用了验证器的话,通常通过rule属性定义验证规则,而如果使用的是独立验证的话,则是通过rule方法进行定义。 属性定义 属性定义方式仅限于验证器,通常类似于下面的方式: <?php namespace app\index\validate; use think\Validate; class User extends Validate { prot

  • 我试图在我的Codeigniter项目中创建一组表单验证规则,以便在第一组验证失败时,第二个验证集不应运行。 我在CI手册里找到了这个: 我知道我现在可以分别运行每个集合的验证($this- 问题是,当我使用$config数组时,当表单post失败时,错误不会添加到表单验证类中(因此不会显示)。当我不使用规则集,但只使用$this时,它确实添加并显示了错误- 当使用一组规则输入无效表单数据时,没有

  • 路过的大佬,应该怎么校验?麻烦大家啦:

  • 在antd3的自定义表单项中,为什么无法触发规则校验 只有这样写才可以 像下面这样写就不能触发错误校验 不是特别理解第一种方式,有大佬可以讲解一下嘛

  • 本文向大家介绍PHP Yii框架之表单验证规则大全,包括了PHP Yii框架之表单验证规则大全的使用技巧和注意事项,需要的朋友参考一下 Yii是一个基于组件的高性能PHP框架,用于开发大型Web应用。Yii采用严格的OOP编写,并有着完善的库引用以及全面的教程。 废话不多说了,直接给大家贴代码了。 完整示例: 以上代码就是关于PHP Yii框架之表单验证规则大全的全部内容,希望大家喜欢。