我正在使用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'


我不知道为什么会出现这种差异。
任何帮助将不胜感激。提前致谢!

最佳答案

问题与authenticate()无关,似乎与login()有关,您似乎正在将unicode而不是django.contrib.auth.models.User对象传递到其中。

您可能应该从authenticate()获取该User对象。

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


authenticate and login文档

关于python - django auth:authenticate()发生奇怪的错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2995736/

10-11 08:54