从JSON

时间:2017-06-29 05:37:12

标签: jquery python json django heroku

我对网络开发很陌生,我试图在Django中实现一个显示动态数据表的网页。我希望数据表显示数据库中的所有对象,当新对象通过JSON进入时,数据表将自动更新,而无需用户刷新页面。这就是我现在所拥有的:

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

此数据表(使用dataTables框架)显示Django数据库中的所有请求对象,但只加载一次。 (当页面加载时,页面的Django视图会根据数据库查询传入&#39;请求。)我尝试研究问题,似乎我需要使用jQuery和/或阿贾克斯,但我不确定如何。我看到dataTables有一个row.add()函数,但同样,我不知道如何实现这个来更新数据表,其中包含推送到网站的JSON信息。

另外,我想象这将在Heroku dyno上运行。我的计划是让Heroku充当webhook的协调播放器,其中来自另一个应用程序的JSON输出被传递给Heroku,后者将更新Django中的数据库并触发网页上的数据表以动态更新。

我是否正确地考虑过这个问题?非常感谢任何帮助,如果有比我想到的更好的解决方案,请告诉我。

2 个答案:

答案 0 :(得分:0)

首次加载页面时加载一个空表。

在datatable中使用ajax来加载数据 参考here

使用'../ajax/data/arrays.txt'

更改json url

对于刷新,您可以拥有setInterval并通过ajax调用您的json url并推送到数据表。参考here

答案 1 :(得分:0)

  

我希望数据表显示数据库中的所有对象,   当一个新对象通过JSON进入时,数据表会   在没有用户刷新页面的情况下自行更新。

您正在搜索的术语是“实时网络应用程序”

  

此数据表显示Django数据库中的所有请求对象,   但只加载一次。

是的,因为到目前为止您已经实现了传统的Web应用程序,其中每个页面都是根据客户端请求加载的。

  

我希望数据表显示数据库中的所有对象,   当一个新对象通过JSON进入时。

要实现此目的,您需要编写一个客户端脚本,该脚本可以侦听服务器推送或池化服务器以获取新添加的数据。我不推荐后一种方法,因为它涉及汇集。

这些是你的选择

  1. 使用客户端java脚本来池化服务器。 (我个人没有 建议)
  2. 检查socket.io框架之间的双向通信 客户端和服务器端,并监听传入的数据和 使用java脚本更新表。
  3. 我强烈建议您使用Angular编写动态客户端 侧。