2010-06-08 9 views
1

authenticate()를 사용하여 수동으로 사용자를 인증하고 있습니다. 내가django auth : authenticate()와 함께 이상한 오류가 발생했습니다.

디버그 추적 사용자에 대한 '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"가 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의 데이터베이스 관련 부분도 게시하십시오. 현재 정보에서 문제의 원인을 찾는 것이 쉽지 않습니다.

전체 추적이 유용합니다.

2

이 문제는 authenticate()하지, 당신이 오히려 django.contrib.auth.models.User 객체보다,에 unicode을 통과 한 것으로 나타났습니다 login()으로 보인다. 당신이에서`authenticate`를 가져 오는 경우

당신은 아마 authenticate()

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

authenticate and login 문서

+0

에서 해당 사용자 개체를 받고해야 하는가? –

+0

예 .. 문제를 발견했습니다. 감사합니다. – Nullpoet

관련 문제