django跟踪最近的在线用户

时间:2009-10-11 12:10:53

标签: django session

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

我已经看到了一些问题的在线解决方案:

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

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

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

4 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:4)

我是撰写该博客的人:)

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

我认为扩展用户模型是处理它的最佳方式,我不知道是否有任何反对意见。

答案 2 :(得分:2)

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

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

请参阅Django manual

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

答案 3 :(得分:0)

试试这个解决方案:

  1. 创建一个像'个人资料'使用user.id作为外键
  2. 创建配置文件视图,当用户登录时,更改状态 从离线到在线

    • 您还可以使用该视图,检查最后登录的用户' X' 分钟
  3. 使用jquery关闭窗口时的句柄,或者何时注销 来自'查看个人资料'将状态从在线更改为离线