我应该从简单的Django AJAX视图返回什么样的响应?

时间:2014-03-27 16:13:59

标签: javascript jquery ajax django

我对AJAX缺乏经验,但对Django很满意。我正在尝试编写一个简单的搜索页面,它使用jQuery来获取匹配的结果,并使用jQuery加载将它们插入到页面中,如下所示:

 $("#results").load(targetURL)

不使用AJAX,我会使用模板迭代格式化从视图返回的结果查询集。使用AJAX,我无法使用模板格式化结果。我目前的解决方案是在视图中将结果格式化为HTML,并从AJAX视图返回此HTML,然后由jQuery加载。

### AJAX View
def myview(request):
    matches = model.objects.filter(type__exact="thisType")
    results_html = ""
    for each in matches:
        results_html += "<tr><td> each.name </td></tr>"
    return HttpResponse(results_html)

这对我来说似乎是个hacky!有更好的方法吗?

我应该返回查询集的json转储吗?如果是这样,关于如何处理/格式化这个返回的json的任何提示?

1 个答案:

答案 0 :(得分:1)

如果您使用json转储进行响应,那么您可以在js中处理它:

$.get(targetURL).done(function(data) {
  $.each(data, function(i,d) {
    $("#results").append($("<tr><td>" + d.name + "</td></tr>"));
  });
});

或者像这样:

$.get(targetURL).done(function(data) {
  $("#results").append(data.map(function(i,d) {
    return $("<tr><td>" + d.name + "</td></tr>");
  }));
});