我根本不知道该怎么做。
我有一个与已知 url 链接的 html,带有两个按钮。想象这个 url 只与两个人/用户共享。
每个人都必须按下按钮签上自己的名字。
我尝试使用请求,但我不知道如何知道该视图中是否有多个用户处于活动状态。
另一点是:
一个人首先到达网址,当第二个出现时,如何在他们的浏览器中“刷新”?
您必须在某个模型中存储谁在什么视图中。
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);
我相信这应该会产生一些想法。