私はDjangoを初めて使用し、ユーザーがログインした時間とユーザーがログアウトした時間を登録するブログを作成しようとしています。
私はこれが見解に入ると思いますが、私は問題にどのように取り組むかについての手がかりを持っていません。
ユーザーがデータベースにログインした時刻を送信するにはどうすればよいですか?
ヒントやガイダンスをいただければ幸いです。
auth.model.User.last_login
Djangoの組み込み認証を使用している場合は、を使用してユーザーの最終ログイン時刻を取得できます。
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
方法です。
参照: