django auth: странная ошибка с authenticate () - PullRequest
1 голос
/ 08 июня 2010

Я использую 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'

Я не могу понять, почему это расхождение.
Любая помощь будет оценена. Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 08 июня 2010

Проблема не в authenticate(), а в login(), который, по-видимому, передает unicode, а не django.contrib.auth.models.User объект.

Вероятно, вы должны получить этот объект User от authenticate()

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

аутентификация и вход в систему документы

0 голосов
/ 08 июня 2010

Значение исключения говорит о том, что «пользователь» является объектом Юникода вместо объекта 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 traceback.

...