0

我根本不知道该怎么做。

我有一个与已知 url 链接的 html,带有两个按钮。想象这个 url 只与两个人/用户共享。

每个人都必须按下按钮签上自己的名字。

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

另一点是:

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

4

1 回答 1

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);

我相信这应该会产生一些想法。

于 2012-09-15T02:00:27.117 回答