Убрать поле подтверждения пароля в стандартной форме Django

Доброго времени суток!

Хотел убрать из стандартной формы UserCreationForm в Django поле подтверждения пароля. Если его просто скрыть используя:

class register(UserCreationForm):
    password2 = None

или удалить при помощи:

def __init__(self, *args, **kwargs):
       super(MyUserCreationForm, self).__init__(*args, **kwargs)
       del self.fields['password2']

то проверки пароля на сложность или длину не будут работать. Вычитал, что можно сделать так:

class register(UserCreationForm):
    email = forms.EmailField(required=True)
    password2 = None

    class Meta:
        model = User
        fields = ['username', 'password1', 'email']
    
    def clean_password1(self):
        password1 = self.cleaned_data.get('password1')
        try:
            password_validation.validate_password(password1, self.instance)
        except forms.ValidationError as error:

            # Method inherited from BaseForm
            self.add_error('password1', error)
        return password1

В данном случае проверки для пароля работают, но не в полном объеме. Например если раньше было: Login: admin Pass: admin123, то выдавалась ошибка что пароль слишком похож на логин. После вставки кода, который написал выше, данная ошибка не появляется, хотя остальные ошибки типа "Пароль слишком короткий", корректно отображаются. Как можно пофиксить? Или есть другой способ избавиться от поля подтверждения пароля?


Ответы (0 шт):