执行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中格式化我的输出吗?
答案 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。
很快,你可以混合搭配。