3

私はDjangoを初めて使用し、ユーザーがログインした時間とユーザーがログアウトした時間を登録するブログを作成しようとしています。

私はこれが見解に入ると思いますが、私は問題にどのように取り組むかについての手がかりを持っていません。

ユーザーがデータベースにログインした時刻を送信するにはどうすればよいですか?

ヒントやガイダンスをいただければ幸いです。

4

1 に答える 1

4

auth.model.User.last_loginDjangoの組み込み認証を使用している場合は、を使用してユーザーの最終ログイン時刻を取得できます。

user = User.objects.get(username='johndoe')
last_login = user.last_login

このデータをテーブル以外の場所に保存したい場合はUser、これを目的のテーブルに挿入するだけlast_loginです。それ以外の場合は、すでににありmodels.Userます。

ログアウトの記録については、次のビューを使用できますlogout

from django.contrib.auth import logout
from django.utils import timezone

def logout_view(request):
    logout(request)
    logout_time = timezone.now()
    # Now save your logout_time to the table you want
    # Redirect to a success page.

または、Djangoのuser_logged_outシグナル(Django 1.3以降で利用可能)を利用して、ユーザーがログアウトするたびに最後のログアウト時間を記録することもできます。

from django.contrib.auth.signals import user_logged_out

def update_last_logout(sender, user, **kwargs):
    """
    A signal receiver which updates the last_logout date for
    the user logging out.
    """
    user.last_logout = timezone.now()
    user.save(update_fields=['last_logout'])
user_logged_out.connect(update_last_logout)

これをファイルの最後に置くことができmodels.pyます。上記のソリューションは、フィールドUserを含むようにモデルを拡張することを前提としていることに注意してください。last_logoutそれをどのように行うかわからない場合は、ここから始めることができます:Djangoヒント5:contrib.auth.models.Userを拡張します。

実際、2番目のアプローチは、Djangoが:models.pyを更新last_loginするUser方法です


参照:

  1. 公式のDjangoドキュメントlast_login
  2. 拡張contrib.auth.models.User
于 2012-09-18T00:43:02.547 に答える