使用jquery函数更新Jinja模板中的表数据

时间:2017-10-02 10:34:25

标签: jquery flask jinja2

第一次加载我的页面时,表生成如下(我迭代blocks作为请求的一部分传递):

<div class="container">
<table class="table table-striped">
        <thead>
          <tr>
            <th>Index</th>
            <th>Previous Hash</th>
            <th>Timestamp</th>
            <th>Data</th>
            <th>Hash</th>
          </tr>
        </thead>
        <tbody>
        {% for block in blocks %}
          <tr>
            <th scope="row">{{block.index}}</th>
            <td>{{block.previous_hash[0:10]}}</td>
            <td>{{block.timestamp}}</td>
            <td>{{block.data}}</td>
            <td>{{block.hash[0:10]}}</td>
          </tr>
          {% else %}
          <li><em>Unbelievable.  No entries here so far</em>
        {% endfor %}
        </tbody>
      </table>
</div>

现在我希望重新加载该表而不在jquery函数中刷新页面。我怎么做?

P.S。 我没有更新文本字段等简单元素的问题:

$('#banner').text('new banner text')

但是这个表格令人困惑。

1 个答案:

答案 0 :(得分:0)

这取决于你想如何处理这个问题。 一种方法是使视图返回包含表数据的html页面:

#!/usr/bin/env python
import os
import sys

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "iDocs.settings")
    from django.core.management import execute_from_command_line
    execute_from_command_line(sys.argv)

您使用以下内容发送数据:

<tr>
    <th scope="row">{{block.index}}</th>
    <td>{{block.previous_hash[0:10]}}</td>
    <td>{{block.timestamp}}</td>
    <td>{{block.data}}</td>
    <td>{{block.hash[0:10]}}</td>
</tr>

然后,您可以使用您的jquery代码更新表并将新行追加到它。

其他方式是一遍又一遍地获取整个表,新数据被抛出。顺便说一下,我会使用第一种方式。