1

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

我想不通,为什么会有这种差异。
任何形式的帮助将不胜感激。提前致谢!

4

2 回答 2

2

问题不在于authenticate(),它似乎在于login()您似乎将 a 传递给unicode而不是django.contrib.auth.models.User对象。

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

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

验证和登录文档

于 2010-06-08T08:38:06.693 回答
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 中与数据库相关的部分。根据您当前的信息,很难找到问题的原因。

完整的回溯也很有帮助。

于 2010-06-08T08:33:11.630 回答