我使用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 :(得分:2)
问题不在于authenticate()
,似乎是login()
,您似乎将unicode
传递给了django.contrib.auth.models.User
,而不是authenticate()
对象。< / p>
您可能应该从user = authenticate(username=username, password=password)
...
login(request, user)
{{1}}
答案 1 :(得分: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部分。根据您当前的信息,找到问题的原因并不容易。
完整回溯也很有用。