2017-08-28 69 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

相關問題