2017-06-29 35 views
2

我對web開發很新穎,我試圖在Django中實現一個顯示動態數據表的網頁。我希望數據表能夠顯示數據庫中的所有對象,並且當新對象通過JSON進入時,數據表會自行更新,而無需用戶刷新頁面。這就是我現在所擁有的:從JSON更新Django中的數據表

<table id="example" class="display" cellspacing="0" width="100%"> 
     <thead> 
      <tr> 
       <th>Room</th> 
       <th>Request</th> 
       <th>Time</th> 
       <th>Mark as Done</th> 
       <th>Cannot Do</th> 
      </tr> 
     </thead> 
     <tbody> 
      {% for request in requests %} 
       <tr> 
       <td>{{ request.room }}</td> 
       <td>{{ request.request }}</td> 
       <td>{{ request.time }}</td> 
       <td>{{ request.done }}</td> 
       <td>{{ request.cannot }}</td> 
       </tr> 
      {% endfor %} 
     </tbody> 
    </table> 

此數據表(使用數據表框架)顯示了Django的數據庫中的所有請求的對象,但只加載它們一次。 (頁面的Django視圖在加載頁面時基於數據庫查詢傳遞'requests')。我試着研究這個問題,看起來我需要使用jQuery和/或Ajax,但我不是當然如何。我看到dataTables有一個row.add()函數,但我不知道如何實現這個更新數據表與JSON推送到該網站的信息。

此外,我設想這將運行在Heroku測功機上。我的計劃是讓Heroku充當webhook的協調播放器,其中來自另一個應用的JSON輸出被傳遞給Heroku,Heroku將更新Django中的數據庫並觸發網頁上的數據表以動態更新。

我在想這個嗎?任何幫助都非常感謝,如果有比我想的更好的解決方案,請告訴我。

回答

0

當頁面加載時首先加載一個空表。在數據表

使用AJAX負載數據 參考here

更改'../ajax/data/arrays.txt'json url

對於刷新你可以有一個setInterval,並通過Ajax調用你的JSON URL和推到數據表。參考here

0

我想在數據表中顯示數據庫中的所有對象, ,當一個新的對象,通過JSON到來時,數據表將 無需用戶刷新頁面自動更新。

您正在搜索術語是「實時web應用程序」

此數據表顯示了Django的數據庫, 的所有請求的對象,但只加載它們一次。

是的,因爲到目前爲止您已經實現了傳統的Web應用程序,每個頁面都是在客戶端請求上加載的。

我想要數據表顯示數據庫中的所有對象, 以及何時通過JSON傳入新對象。

爲了實現這個目標,您需要編寫一個客戶端腳本,該腳本可以偵聽服務器推送或共享服務器以獲取新添加的數據。我不推薦後一種方法,因爲它涉及彙集。

這是你的選擇

  1. 使用客戶端Java腳本彙集服務器。 (我個人不推薦 )
  2. 檢查socket.io框架,打開 客戶端和服務器端之間的雙向通信,並監聽傳入數據和 使用java腳本更新表。
  3. 我強烈建議您使用Angular來編寫動態客戶端 一面。