Python (Django) - Аутентификация возврата Нет - PullRequest
0 голосов
/ 27 марта 2020

Я использую функцию аутентификации Django, чтобы позволить пользователям зарегистрироваться (создать учетную запись) и войти (войти после создания учетной записи). Аутентификация отлично работает для регистрации, но когда я пытаюсь войти в систему после выхода из системы, она не работает.

Метод регистрации:

if request.method == 'POST':
     form = SignUpForm(request.POST)
          if form.is_valid():
               form.save()
               username = form.cleaned_data['username']
               raw_password = form.cleaned_data['password1']
               user = authenticate(username=username, password=raw_password) #returns user object
               login(request, user) #works

Метод входа:

if request.method == 'POST':
     form = AuthenticationForm(request=request, data=request.POST)
          if form.is_valid():
               username = form.cleaned_data['username']
               password = form.cleaned_data['password']
               user = authenticate(user=username, password=password) #returns None              
               login(request, user) #doesn't work

Я просмотрел несколько других тем, которые сообщали о подобной проблеме, и добавил следующий код в мой файл settings.py. Однако аутентификация по-прежнему не возвращает ничего, когда я пытаюсь войти в систему.

settings.py code

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

1 Ответ

2 голосов
/ 27 марта 2020

Согласно Django документации для authenticate, допустимыми аргументами ключевых слов являются username и password. Таким образом, я бы рекомендовал изменить следующее в методе «Вход»:

user = authenticate(user=username, password=password)

на

user = authenticate(request=request, username=username, password=password)

...