【问题标题】:Django: 2 active users in a specific urlDjango:特定网址中有 2 个活跃用户
【发布时间】:2012-09-08 03:21:18
【问题描述】:

我根本不知道该怎么做。

我有一个与已知 url 链接的 html,带有两个按钮。 假设该网址仅与两个人/用户共享。

每个人都必须按下签名他们名字的按钮。

我尝试使用请求,但我不知道如何知道该视图中是否有多个用户处于活动状态。

还有一点是:

一个人首先到达该网址,当第二个出现时,如何在他们的浏览器中“刷新”?

【问题讨论】:

    标签: django url session cookies request


    【解决方案1】:

    您必须在某个模型中存储谁在哪个视图中。

    class UsersInURL(models.Model):
        users = models.ManyToManyField(User)
        url = models.CharField()
        # you'd probably want to use a through table and set up some expiration logic
    

    然后记住每次登录用户查看页面时都要修改这个模型;中间件听起来很适合这个。

    class UserTrackerMiddleware(object):
        def process_view(self, request, *args, **kwargs):
              UsersInURL.users.through.filter(user=request.user).delete()
              users_in_url, created = UsersInURL.objects.get_or_create(url=request.path)
              users_in_url.users.add(request.user)
    

    然后要刷新他们的页面,您需要在服务器和浏览器之间设置某种通信,该通信会 ping 此模型并在检测到某些更改时刷新。

    var lastCheckedUsers = undefined;
    function checkForNewUsers() {
        $.get('/some-ajaxy-url/', { url: document.URL }, success: function(data) {
             // you'd have to set up a view that returns active users @ url
             if (lastCheckedUsers != data.users && lastCheckedUsers != undefined) {
                window.location.href = window.location.href; 
             };
            lastCheckedUsers = data.users;  // store last state; refresh if modified. 
        })
    };
    setInterval(checkForNewUsers, 1000);
    

    我相信这应该会激发一些想法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-13
      • 2016-11-01
      • 1970-01-01
      • 2011-05-14
      • 1970-01-01
      • 2013-11-12
      相关资源
      最近更新 更多