Я использую последнюю версию 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, и это, похоже, проблема;