Django version 1.10.7

Я получаю TypeError: authenticate() takes exactly 0 arguments (3 given)

Импортируем authenticate () следующим образом:
from django.contrib.auth import authenticate, login

Вызов authenticate () примерно так:
authenticate(request, username=request.POST['username'] ,password=request.POST['password'])

1
Rahul Verma 29 Авг 2017 в 00:36

3 ответа

Лучший ответ

В 1.10 authenticate не принимает позиционные аргументы (docs) называть это как

authenticate(username=request.POST['username'], password=request.POST['password'])
2
chicocvenancio 28 Авг 2017 в 21:53

Установите для аутентификации переменную и не передавайте запрос, например:

auth = authenticate(username=request.POST['username'] ,password=request.POST['password'])

А затем используйте логин, чтобы пользователь вошел в систему:

login(request, auth)

Не забудьте импортировать логин

2
csling 28 Авг 2017 в 21:43

Использовать аутентификацию без запроса, принимает только имя пользователя и пароль authenticate(username=XXX,password=XXX). См. Документацию https://docs.djangoproject.com/ ен / 1,11 / _modules / Джанго / вно / авт / # Аутентифицировать

2
aspo 28 Авг 2017 в 21:46