我是Django的新手,嘗試構建一個博客,它將註冊用戶登錄的時間和用戶註銷的時間。Django發佈時間到數據庫
我猜這會發生在意見,但我不知道如何解決問題的線索。
我該如何去發送用戶登錄到數據庫的時間?
任何暗示和指導將不勝感激。
我是Django的新手,嘗試構建一個博客,它將註冊用戶登錄的時間和用戶註銷的時間。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 Tip 5: Extending contrib.auth.models.User。
實際上,第二種方法正是Django如何更新last_login
User
:models.py。
參考: