2010-06-08 81 views
1

我使用authenticate()手動驗證用戶。 使用管理界面,我可以看到,對於用戶django auth:驗證奇怪的錯誤()

調試回溯沒有「LAST_LOGIN」屬性是:

Environment: 

Request Method: GET 
Request URL: https://localhost/login/ 
Django Version: 1.1.1 
Python Version: 2.6.5 
Installed Applications: 
['django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.sites', 
'django.contrib.admin', 
'mobius.polls'] 
Installed Middleware: 
('django.middleware.common.CommonMiddleware', 
'django.contrib.sessions.middleware.SessionMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware') 


Traceback: 
File "/usr/lib/pymodules/python2.6/django/core/handlers/base.py" in get_response 
    92.     response = callback(request, *callback_args, **callback_kwargs) 
File "/usr/lib/pymodules/python2.6/django/contrib/auth/__init__.py" in login 
    55.  user.last_login = datetime.datetime.now() 

Exception Type: AttributeError at /login/ 
Exception Value: 'unicode' object has no attribute 'last_login' 

我無法弄清楚,爲什麼會出現這種差異。
任何形式的幫助,將不勝感激。提前致謝!

回答

0

異常值告訴它:「user」是一個unicode對象而不是django.contrib.auth.models.User對象。你確定數據庫可以訪問嗎?請嘗試:

python manage.py shell 
>>> from django.contrib.auth.models import User 
>>> u = User.objects.get(pk=1) 
>>> u.last_login 

此代碼必須正常工作。如果沒有,那麼你的數據庫設置有問題。 (也許你沒有做python manage.py syncdb?)

請發佈你的數據庫相關部分settings.py以及。從目前的信息來看,找到問題的原因並不容易。

full回溯也很有幫助。

2

的問題不在於authenticate(),它似乎是與你似乎是傳遞unicode進入,而不是django.contrib.auth.models.User對象login()

你或許應該從authenticate()

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

authenticate and login文檔

+0

獲得該用戶對象你從哪裏進口'authenticate'? – 2010-06-08 08:55:31

+0

是的..發現問題。 謝謝 – Nullpoet 2010-06-08 08:58:37