django确认密码验证器

KVI*_*ISH 11 django validation

我有一个配置文件设置页面,用户可以在其中更改密码,如果有,则必须进行确认.我无法将其作为必填字段,因为他们无需更改密码.如果密码字段不为空,是否有验证确认密码的示例?然后检查它们是否相等?我无法找到任何这样的例子......

Chr*_*att 24

将以下内容添加到表单的clean方法中:

def clean(self):
    password1 = self.cleaned_data.get('password1')
    password2 = self.cleaned_data.get('password2')

    if password1 and password1 != password2:
        raise forms.ValidationError("Passwords don't match")

    return self.cleaned_data
Run Code Online (Sandbox Code Playgroud)

编辑

上面的验证错误消息将进入non_field_errors.您没有指定在每个密码字段上显示的错误消息,但根据上下文,我认为这是"此字段是必需的"消息.如果是这种情况,请确保您required=False在定义表单字段时具有表单字段,或者如果您正在使用表单子类(并且无法编辑实际表单字段),则可以覆盖__init__表单的方法:

class MyForm(SomeOtherForm):
    def __init__(self, *args, **kwargs):
        super(MyForm, self).__init__(*args, **kwargs)

        self.fields['password1'].required = False
        self.fields['password2'].required = False
Run Code Online (Sandbox Code Playgroud)