Проверка входа - сообщения об ошибках - всегда одинаковые - PullRequest
0 голосов
/ 07 мая 2018

Я использую последнюю версию Django (2.05)

Я создал пользовательскую модель:

class User(AbstractBaseUser, MermissionsMixin):
    email = models.EmailField(max_length=255, unique=True)
    first_name = models.CharField(max_length=255)
    last_name = models.CharField(max_length=255)
    is_active = models.BooleanField(default=False)  # can't login


class ULoginForm(AuthenticationForm):

    # we declared this way to override the AuthenticationForm fields
    username = UsernameField(max_length=254, widget=TextWidget(attrs={'autofocus': True, 'placeholder': 'Email*'}))
    password = forms.CharField(strip=False, widget=PasswordWidget(attrs={'placeholder': 'Password*'}))

Сначала я могу войти в систему, если учетные данные верны, проблема в том, что в случае ошибки проверки я получаю то же сообщение:

Please enter a correct email and password. Note that both fields may be case-sensitive.

Если имя пользователя и пароль верны, учетная запись не активна, сообщение должно отличаться, account inactive, чтобы узнать пользователя, которому необходимо подтвердить электронную почту.

После дальнейшего расследования в Django AutentificationForm используется следующий код:

def clean:

      if username is not None and password:
                self.user_cache = authenticate(self.request, username=username, password=password)

                if self.user_cache is None:
                    raise forms.ValidationError(
                        self.error_messages['invalid_login'],

self.user_cache всегда возвращает None, и это, похоже, проблема;

...