Я пытаюсь настроить стандартную 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')