通过Django template-tag渲染JSON对象

时间:2013-12-25 15:05:47

标签: javascript jquery python django json

我通过模板中的AJAX以JSON格式接收Django对象的字典。有没有可能通过Django模板标签呈现这个字典?我可以从jQuery调用Django模板标记并将对象作为参数传递给它吗?

目前的解决方案是在jQuery中繁琐地构造html:

$.ajax({
    url: url,
    type: "POST",
    success: function(data) {
        var obj = $.parseJSON(data);
        $.each(obj, function() {
            data = this['fields'];

            post += "<p id='" + this['pk'] + "'>" + data['creator'] + data['created'] + data['body'];
            post += "depth: " + data['depth'];
            post += "<a name='" + this['pk'] + "' class='show_answers' href='" + show_url + "'>Show</a>";
            post += "<a name='" + this['pk'] + "' href='" + answer_url + "'>Answer</a></p>";
            post += "<div id='" + this['pk'] + "_div'></div>";
        });
        $('#' + div_id).html(post);
    },
    crossDomain: false
}); 

1 个答案:

答案 0 :(得分:1)

Templatetags是服务器端的,所以不,你不能使用django的模板来处理Ajax请求的结果 - 至少不是直接的。可能的解决方案:

  • 你最终可以编写一个视图来获取你的json数据并返回格式化的html,但这有点偏重。

  • 如果json来自您自己的应用程序,您可以返回一个html片段而不是json。

  • 如果json来自另一个网站,你也可以在你的应用程序中有一个视图来执行请求并从json返回一个格式化的html片段(然后你会发布到这个视图)。

  • 最后如果你的应用程序很重视ajax / json的东西,你可能想要使用一些js模板框架或类似angular.js