【问题标题】:Django - How to check if an user is visiting the website everydayDjango - 如何检查用户是否每天都在访问该网站
【发布时间】:2016-07-07 13:46:47
【问题描述】:

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

【问题讨论】:

    标签: python django


    【解决方案1】:

    我想在我的 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....
    

    【讨论】:

    • 这似乎是个好主意!感谢您的提示,我会尽快尝试!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-03
    • 2017-10-23
    • 2019-10-25
    • 2011-12-27
    • 2012-05-04
    • 2013-03-19
    相关资源
    最近更新 更多