django confirm password validator

后端 未结 1 1491
情歌与酒
情歌与酒 2021-02-08 03:52

I have a profile settings page where users can change their password and they have to confirm it if they do. I cannot make this a required field, since they dont HAVE to change

相关标签:
1条回答
  • 2021-02-08 04:08

    Add the following to your form's clean method:

    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
    

    EDIT

    The validation error message above will go into non_field_errors. You didn't specify what error message is showing on each password field, but based on context, I would imagine it's a "This field is required" message. If that's the case, make sure that your form fields have required=False when you define them, or if you're working with a form subclass (and can't edit the actual form fields) you can override the __init__ method of the form:

    class MyForm(SomeOtherForm):
        def __init__(self, *args, **kwargs):
            super(MyForm, self).__init__(*args, **kwargs)
    
            self.fields['password1'].required = False
            self.fields['password2'].required = False
    
    0 讨论(0)
提交回复
热议问题