我通过模板中的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
});
答案 0 :(得分:1)
Templatetags是服务器端的,所以不,你不能使用django的模板来处理Ajax请求的结果 - 至少不是直接的。可能的解决方案:
你最终可以编写一个视图来获取你的json数据并返回格式化的html,但这有点偏重。
如果json来自您自己的应用程序,您可以返回一个html片段而不是json。
如果json来自另一个网站,你也可以在你的应用程序中有一个视图来执行请求并从json返回一个格式化的html片段(然后你会发布到这个视图)。
最后如果你的应用程序很重视ajax / json的东西,你可能想要使用一些js模板框架或类似angular.js