我有一个自定义密码表单字段。现在,当我有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)
答案 0 :(得分:1)
将您的逻辑移至PasswordForm
的{{1}}方法,或将其写为validator,然后将此验证程序应用于第一个密码字段。
clean_password
注意,请注意您可能想要使用django的validate_password
,然后移动可能会将您的逻辑移动到您自己的自定义验证器中。
否则,要将逻辑保留在字段中,只需使用CharField
PasswordInput
C # Two-dimensional int array,Sum off all elements使用{{3}}窗口小部件,以便您只使用表单中的一个自定义字段。