Django TypeError: authenticate() takes exactly 0 arguments (3 given)

Django TypeError: authenticate() takes exactly 0 arguments (3 given)

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'])

将authenticate设置为变量,不传入request,如:

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

然后使用 login 让用户登录:

login(request, auth)

不要忘记导入登录名

在 1.10 中 authenticate 不接受位置参数 (docs) 称之为

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

在没有请求的情况下使用身份验证,只需要用户名和密码authenticate(username=XXX,password=XXX)。请参阅文档 https://docs.djangoproject.com/en/1.11/_modules/django/contrib/auth/#authenticate