2012-09-18 46 views
3

我是Django的新手,嘗試構建一個博客,它將註冊用戶登錄的時間和用戶註銷的時間。Django發佈時間到數據庫

我猜這會發生在意見,但我不知道如何解決問題的線索。

我該如何去發送用戶登錄到數據庫的時間?

任何暗示和指導將不勝感激。

回答

4

您可以使用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_loginUsermodels.py


參考:

  1. Official Django doc on last_login
  2. Extending contrib.auth.models.User