2016-07-07 53 views

回答

2

我想在我的Django項目上做同樣的事情。問題是last_login變量沒有幫助,因爲它在用戶登錄時被更新,並且如果用戶緩存他的會話,變量將永遠不會被更新。

一個解決方案是創建一個裝飾器,並在你的視圖上使用它。這樣,如果用戶使用您的網站,變量將被更新。

這是如何做到這一點的例子:

from functools import wraps 
from django.contrib.auth.models import User 
from django.utils import timezone 

def W_update_user_login(func): 
    @wraps(func) 
    def wrapper(*args, **kwargs): 
     request = args[0] 

     if request.user.is_authenticated(): 
      user=User.objects.get(username=request.user) 
      user.last_login=timezone.now() 
      user.save() 

     return func(*args, **kwargs) 
    return wrapper 

如果您添加到您的views.py文件前面的代碼,你將能夠裝點你的功能。例如:

@W_update_user_login 
def your_view_function(request): 

    # 
    # your normal code.. 
    # 
    return HttpResponse.... 
+0

這似乎是一個非常好的主意!感謝提示,我會盡快嘗試! –

相關問題