如果其他用户更改数据,Django刷新页面

时间:2011-11-12 17:33:12

标签: django django-signals page-refresh

我有一个测试django app。

在一个页面中,测试向所有用户显示相同的问题。

我希望当用户正确回答时,向其他活跃用户的浏览器发送信号以刷新下一个问题。

我一直在学习django中的信号我和他们一起学习,但我现在不知道如何发送"刷新信号"到客户端浏览器。

我认为它可以使用javascript代码检查某个值(实际问题)是否发生变化,如果更改重新加载页面但我不知道这种语言,而且我发现的信息很混乱。< / p>

有人能帮助我吗?

非常感谢。

3 个答案:

答案 0 :(得分:4)

没有现有方法可以将事件从服务器发送到浏览器。但是,您可以定期轮询您的服务器(比如每5秒钟)。

javascript / jquery中的代码可能如下所示

setInterval(function(){
    $.post("your_ajax_handler_url/is_answerd", userId, function(xhr){
       if(xhr.responseText == "answered"){
          location.reload(true);
       }  
    }
 }, 5000);

答案 1 :(得分:3)

这完全不是Django中的信号。 django中的信号是服务器端挂钩,允许您在某种情况发生时在服务器上执行任务。

要向浏览器“发送刷新”,您需要使用服务器推送方法,例如Comet。或者,您可以让客户定期轮询服务器以查找更新。

以下是一些链接:

How to implement Server push / long polling / comet using PHP and Javascript

How do I implement basic "Long Polling"?

答案 2 :(得分:-1)

你需要的是冥想(http://en.wikipedia.org/wiki/Comet_%28programming%29)和龙卷风(http://www.tornadoweb.org/)