2011-11-12 37 views
2

我有一個測試Django應用程序。Django刷新頁面如果其他用戶更改數據

在一頁中,測試向所有用戶顯示相同的問題。

我希望當用戶正確回答時,向其他活動用戶的瀏覽器發送信號以刷新下一個問題。

我一直在學習有關django的信號,我正在與他們學習,但我現在不知道如何向客戶端瀏覽器發送「刷新信號」。

我認爲它可以用一個javascript代碼來檢查某個值(實際問題)是否改變,如果改變重新加載頁面,但我不知道這種語言和我發現的信息是混淆的。

任何人都可以幫助我嗎?

很多謝謝。

+0

可能重複:http://stackoverflow.com/questions/5479741/django-push-http-response-to-users – Spike

回答

4

還有就是從服務器發送一個事件到瀏覽器沒有現成的辦法。但是,您可以定期輪詢您的服務器(例如每5秒鐘)。

在JavaScript代碼/ jQuery的可能是像下面

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

感謝您的代碼。但我有一個問題,我發送郵件的信息每5秒,但我沒有得到Django視圖處理後 pydev中的斷點不通過它 –

+0

自動響應:您需要添加裝飾器csrf_exempt –

2

這完全不是Django中的信號。 django中的信號是服務器端鉤子,它允許您在發生特定事件時在服務器上執行任務。

要向瀏覽器發送刷新信息,您需要使用服務器推送方式,如Comet。或者,您可以讓客戶定期輪詢服務器以查找更新。

下面是一些鏈接:

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

How do I implement basic "Long Polling"?

+0

感謝您的信息。我已經讀過關於彗星的書,但我認爲它對我的學生來說太強大了。我將使用javascriptoptión來檢查更新。非常感謝 –

-1

你需要的是什麼COMENT(http://en.wikipedia.org/wiki/Comet_%28programming%29)和龍捲風(HTTP ://www.tornadoweb.org/)

相關問題