Django подтвердить проверку пароля

У меня есть страница настроек профиля, где пользователи могут менять свой пароль, и они должны подтвердить это, если они это сделают. Я не могу сделать это обязательным полем, так как они не должны менять пароль. Есть ли пример для подтверждения пароля подтверждения ЕСЛИ поле пароля не пусто? А потом проверить, равны ли они? Я не смог найти такой пример...

Ответ 1

Добавьте в форму 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

ИЗМЕНИТЬ

Сообщение об ошибке проверки выше перейдет в 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