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