仅在一个表单字段上显示错误

时间:2016-07-13 07:07:47

标签: django django-forms

我有一个自定义密码表单字段。现在,当我有2个密码字段,密码不符合要求。两个字段都报告错误。

有没有办法可以在第一个字段上发生错误时删除此错误?

class PasswordField(forms.CharField):
    def validate(self, value):
        super(PasswordField, self).validate(value)
        if not value or re.match("^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d!.@#$%^&*()?<>]{8,}$", value):
            return value
        raise forms.ValidationError(_("The password does not match the requirements. "
                                  "It should be at least 8 characters long, contain 1 Uppercase letter, "
                                  "1 lowercase letter and 1 number."))

class PasswordForm(forms.Form):
    password = PasswordField(widget=forms.PasswordInput(), label="Password", required=True)
    password_2 = PasswordField(widget=forms.PasswordInput(), label="Confirm Password", required=True)

1 个答案:

答案 0 :(得分:1)

将您的逻辑移至PasswordForm的{​​{1}}方法,或将其写为validator,然后将此验证程序应用于第一个密码字段。

clean_password

注意,请注意您可能想要使用django的validate_password,然后移动可能会将您的逻辑移动到您自己的自定义验证器中。

否则,要将逻辑保留在字段中,只需使用CharField PasswordInput C # Two-dimensional int array,Sum off all elements使用{{3}}窗口小部件,以便您只使用表单中的一个自定义字段。