Skip to main content
 首页 » 编程设计

python之Django之如何检查用户是否每天访问该网站

2024年08月22日31jiqing9006

根据标题,在 Django 中,我应该何时何地存储有关用户访问的信息?我已经使用 Django 内置信号记录了用户登录/注销,但是如果用户已经登录到那台机器上怎么办?我怎么能检测到这个?

请您参考如下方法:

我想在我的 Django 项目上做同样的事情。问题是 last_login 变量没有帮助,因为它在用户登录时更新,如果用户缓存他的 session ,该变量将永远不会更新。

一个解决方案是创建一个装饰器,然后在您的 View 上使用它。这样,如果用户使用您的网站,变量将得到更新。

这是一个如何做到这一点的例子:

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....