Django ajax格式约定

时间:2009-11-19 02:33:33

标签: python django json dom formatting

执行ajax请求的正确方法是什么,我见过人们使用返回的render_to_string,以便他们可以使用模板语言在python中完成所有格式化。例如〜

return render_to_string('calendar.html', {
'self' : self,
'month' : self.today.month,})

将此作为javascript:

$('#django_calendar_response').html(response)

但是我也看到人们使用诸如

之类的dom函数在javascript中格式化他们的输出
return HttpResponse(serializers.serialize("json",
ilst, relations=('user',)), "application/json")

其中javascript是

items_display=function(items){
    return LI(null,
    A({'class':'userlink',
    'href':'/url/user/'+items.fields.user.fields.name},
    items.fields.user.fields.name),

这些是正确的,另一个是错的吗?我应该在javascript或python中格式化我的输出吗?

2 个答案:

答案 0 :(得分:2)

我一直在使用JSON专门用于AJAX,simplejson返回任何非常简单的数据,它看起来像这样:

from django.utils import simplejson
reply = simplejson.dumps({'comment_body': formatted_post, 'user_icon': request.user.profile.image.url })
return HttpResponse(reply, mimetype="application/json")

在客户端,使用jquery的.post方法处理json回复也很简单,你可以指定json作为你的数据类型:

$.post("/postcomment/", { body: comment_body },
  function(data){
    alert(data.comment_body)
  }, "json");

我不是说这是最好的解决方案,但事实证明它非常强大且易于操作......

希望这有帮助,

马丁

答案 1 :(得分:1)

我做到了。有时我在大页面模板中有{% include %}的简短模板片段。渲染这些并返回html以插入到DOM(因为代码已经设置),而不是必须编写JS来执行它(再次)。其他时候,我只生成一些JSON并将其注入DOM。

很快,你可以混合搭配。