2016-07-07 4 views

Antwort

2

Ich wollte dasselbe auf meinem Django-Projekt machen. Das Problem ist, dass die Variable last_login nicht hilft, da sie bei der Benutzeranmeldung aktualisiert wird. Wenn der Benutzer seine Sitzung zwischenspeichert, wird die Variable niemals aktualisiert.

Eine Lösung besteht darin, einen Dekorateur zu erstellen und auf Ihrer Ansicht zu verwenden. Auf diese Weise wird die Variable aktualisiert, wenn der Benutzer Ihre Site verwendet.

Dies ist ein Beispiel dafür, wie es zu tun:

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 

Wenn Sie den vorherigen Code in Ihre views.py Datei hinzufügen, können Sie Ihre Funktionen dekorieren. ex:

@W_update_user_login 
def your_view_function(request): 

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

Das scheint eine wirklich gute Idee! Danke für den Hinweis, ich werde es bald versuchen! –

Verwandte Themen