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

問題はではなく、オブジェクトではなくa を渡しているように見えauthenticate()ます。login()unicodedjango.contrib.auth.models.User

おそらくその User オブジェクトを取得する必要がありますauthenticate()

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

ドキュメントの認証とログイン

于 2010-06-08T08:38:06.693 に答える
0

例外値は、「user」は django.contrib.auth.models.User オブジェクトではなく Unicode オブジェクトであることを示しています。データベースにアクセスできますか? 試す:

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 に答える