【问题标题】:django tracking recent online usersdjango 跟踪最近的在线用户
【发布时间】:2010-12-05 18:04:09
【问题描述】:

有没有办法在 django 中跟踪活跃用户?

我在网上看到了一些解决这个问题的方法:

http://mpcabd.igeex.biz/get-online-users-in-django/

成为其中之一。但是仅仅为了解决这个简单的问题而修改模型结构似乎很奇怪。我想知道是否有任何快速的解决方案。

django auth 中的 last_login 字段也没有多大用处,因为它只记录用户登录的时间,如果用户长时间处于会话状态,该字段不会更新

【问题讨论】:

    标签: django session


    【解决方案1】:

    我是那个写博客的人:)

    我没有修改 User 模型,我对其进行了扩展,它与配置文件相同,但我想以一种方式,如果您已经定义了配置文件,您仍然可以使用我的方法。

    我觉得扩展User模型是最好的处理方式,不知道有没有反对意见。

    【讨论】:

    • 我已经在使用扩展模型。我的意思是我需要直接获取活动用户状态,而不需要在模型中添加“last_activity_ip”和“last_activity_date”。但在这种情况下,您的解决方案似乎是最好的方法。
    【解决方案2】:

    我同意最好的方法是使用个人资料。这将具有用户表的外键,而不是修改现有表。

    就如何记录用户操作而言,一种模式可能是编写一个装饰器来包装您要记录的所有视图。装饰器会简单地根据相关用户的个人资料记录时间和操作。

    【讨论】:

      【解决方案3】:

      修改 auth User 模型可能不是一个非常“灵活”的方法。

      最简单的方法可能是提供配置文件 - Django 内置支持提供用户配置文件模型来存储额外的用户相关数据,而无需修改任何内置模型。

      Django manual

      您只需将上次活动时间存储在用户的个人资料中。

      【讨论】:

        【解决方案4】:

        试试这个解决方案:

        1. 使用 user.id 作为外键创建类似“profile”的模型
        2. 创建个人资料视图,当用户登录时,改变状态 从线下到线上

          • 您也可以使用视图来检查最后登录“X”的用户 分钟
        3. 使用 jquery 关闭窗口或注销时处理 从“查看个人资料”将状态从在线更改为离线

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-11-27
          • 2019-01-26
          • 1970-01-01
          • 1970-01-01
          • 2011-09-25
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多