我有两个不同的 AJAX 请求要合并。
第一个得到一些 html:
def ajax_get_html(request):
if request.is_ajax() and request.method == "POST":
context = {
...
}
return render(request,"my_app/my_template.html", context)
else:
raise Http404
像这样使用:
$.ajax({
type: "POST",
url: ajax_url,
data: {
csrfmiddlewaretoken: "{{ csrf_token }}",
},
success: function(data){
$(my_div).html(data);
}
});
我的第二个获取一些数据:
def ajax_get_data(request):
if request.is_ajax() and request.method == "POST":
data = {
"answer": 42,
}
json_data = json.dumps(data)
return HttpResponse(json_data, content_type='application/json')
else:
raise Http404
像这样使用:
$.ajax({
type: "POST",
url: another_ajax_url,
data: {
csrfmiddlewaretoken: "{{ csrf_token }}",
},
success: function(data){
var answer = data.answer;
$("#notification_badge").html(answer);
}
});
如何将这些组合到同一个请求中?我尝试将 render 的结果添加到第二个 View 中的数据,但 json.dumps 说它不可序列化。
请您参考如下方法:
你不能序列化 Django 的 render 的输出,因为它 returns an HttpResponse object ,而不是字符串(这是您希望能够对其进行序列化的内容)。
一个好的解决方案是使用 render_to_string 将您的 html 返回到前端:
...
data = {
"answer": 42,
"html": render_to_string("my_app/my_template.html", context)
}
...
