2017-08-28 65 views
1

Django version 1.10.7Django的类型错误:身份验证()恰恰0参数(3给出)

我越来越TypeError: authenticate() takes exactly 0 arguments (3 given)

导入身份验证()是这样的:
from django.contrib.auth import authenticate, login

调用验证()像这样:
authenticate(request, username=request.POST['username'] ,password=request.POST['password'])

回答

1

在1.10 authenticate不带位置参数(docs) 称其为

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

https://docs.djangoproject.com/en/1.11/topics/auth/default/#how-to-log-a-user-in:在给出的例子中,使用的身份验证类似于'user = authenticate(request, username = username,password = password)' – batMan

+0

@batMan确实,但要注意版本。在1.11 Django增加了一个可选的请求参数,但1.10没有。 – chicocvenancio

+0

好吧所以这只是在1.11中可选。说得通。我只是试过,它的工作。希望我可以在这里接受所有3个答案。无论如何,我已经upvoted所有这些。感谢您的快速回答。 – batMan

2

将验证设置为一个变量不传递的要求,如:

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

然后使用登录来获取用户登录:

login(request, auth) 

不要忘了导入登录

+0

https://docs.djangoproject.com/en/1.11/topics/auth/default/#how-to-log-a-user-in:在给出的示例中,使用的身份验证类似于'用户=认证(请求,用户名=用户名,密码=密码)' – batMan

+0

希望我可以接受这里的所有3个答案。无论如何,我已经upvoted所有这些。感谢您的快速回答。 – batMan

2

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

+0

https://docs.djangoproject.com/en/1.11/topics/auth/default/#how-to-log-a-user-in:在给定的例子中,使用的身份验证类似于'user = authenticate(request,用户名=用户名,密码=密码)' – batMan

+0

您使用的是Django版本1.10.7,可选版本是在版本1.11中添加的。阅读笔记。 – deaspo

+0

希望我能接受这里的所有3个答案。无论如何,我已经upvoted所有这些。感谢您的快速回答。 – batMan

相关问题