Получение AttributeError при 'authenticate' в пользовательской AuthenticationForm - PullRequest
0 голосов
/ 25 марта 2020

Я пытаюсь настроить стандартную AuthenticationForm для некоторых моих требований в Django. Индивидуальный вход в систему работает хорошо, когда я ввожу правильные учетные данные. Но если я ввожу неверный пароль, я получаю сообщение об ошибке, как показано ниже. сообщение об ошибке (или исключение), возникающее при аутентификации с кодом «self.user_cache = authenticate (имя пользователя = имя пользователя, пароль = пароль)».

Пожалуйста, помогите мне, если я что-то здесь упустил.

Ошибка

AttributeError at /login/
'CustomAuthenticationForm' object has no attribute 'authenticate'


Request Method:
POST 

Request URL:
http://127.0.0.1:8000/login/?next=/ 

Django Version:
1.6.10 

Exception Type:
AttributeError 

Exception Value:
'CustomAuthenticationForm' object has no attribute 'authenticate'
 

Exception Location:
C:\vmshare\workspace\DAU_2\dau_gui\venv\lib\site-packages\django\contrib\auth\__init__.py in authenticate, line 49 

Python Executable:
C:\vmshare\workspace\DAU_2\dau_gui\venv\Scripts\python.exe 

Python Version:
2.7.9 

Мой индивидуальный логин

class CustomAuthenticationForm(AuthenticationForm):

    def clean(self):
        username = self.cleaned_data.get('username')
        password = self.cleaned_data.get('password')

        if username is not None and password:

            try:
                user = User.objects.get(username=username)
            except User.DoesNotExist:
                user = None
                raise forms.ValidationError('User does not exist.')

            try:
                self.user_cache = authenticate(username=username, password=password)
            except User.DoesNotExist:
                raise forms.ValidationError('Incorrect password.')

            if user is not None:
                self.confirm_login_allowed(user)
            else:
                raise forms.ValidationError(
                    self.error_messages['invalid_login'],
                    code='invalid_login',
                    params={'username': self.username_field.verbose_name},)

        return self.cleaned_data

    def confirm_login_allowed(self, user):
        if not user.is_active:
            raise forms.ValidationError('There was a problem with your login.', code='invalid_login')

В моих settings.py я добавил это

AUTHENTICATION_BACKENDS = ('django.contrib.auth.backends.ModelBackend','dau_gui_app.forms.CustomAuthenticationForm')
...