使用Django中的AJAX数据填充HTML表

时间:2018-03-17 08:32:24

标签: javascript jquery html ajax django

我在Django模板中运行了以下AJAX脚本:

function create_table() {
    $.ajax({
        method: "GET",
        url: "/api/data/",
        success: function(data){
            console.log('button clicked')
            console.log(data)
            //$('#table').html('<div class="test">' + data['Name'] +'</div>');
            //$('#table').load('table_to_load.html');

        },
        error: function(error_data){
            console.log("errorrr")
            console.log(error_data)
        }
    })
}
document.getElementById("create_table").onclick = function() {
    create_table();
    return false;
}

此脚本的目的是在按下AJAX调用获取的字典数据填充按钮时创建HTML表。

AJAX调用正确收集数据,但是,我不知道如何插入表格。

我应该在AJAX调用中的纯Javascript / jQuery中编写表格HTML吗?或者可能加载预先准备好的HTML(如何在调用中引用其目录?)?

我首选的方法是在Django的模板标记语言中为表格编写模板,并以某种方式在其中引用AJAX提取的数据。类似的东西:

<table>
    <tr>
      <th>dictionary key</th>
      <th>dictionary value</th>
    </tr>
 {% for key, value in dictionary.items %}
   <tr>
       <td>{{ key }}</td>
       <td>
            <a href="{{ value }}">{{ value }}</a>
       </td>
   </tr>
 {% endfor %}
</table>

但我不确定它是否可能。

1 个答案:

答案 0 :(得分:0)

你可以采取任何一种方式,但你似乎想要以两种方式进行。

您可以使用ajax进行调用并获取一些json数据,然后使用该json对象构建html字符串并使用jquery将该html插入页面中的正确位置 - 这样的方式没有任何问题imo虽然我个人并不喜欢将html语句拼接在一起(主要是因为对于复杂的页面来说,很难设计它们并以这种方式调试它们,但对于小块来说它可以)。

另一种方法是让jquery调用django视图(通过你定义的url),让django视图进行数据库调用并使用项目中已经存在的模板作为html doc,然后渲染该模板和任何其他django页面一样的数据。该视图将返回包含html的httpresponse,然后jquery将像以前一样将该html插入到页面中。