通过Django template-tag渲染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 += "

" + data['creator'] + data['created'] + data['body']; post += "depth: " + data['depth']; post += "Show"; post += "Answer

"; post += "
"; }); $('#' + div_id).html(post); }, crossDomain: false });

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

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

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

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

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