如何通过Ajax返回呈现的Html?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (161)

我试图通过和Ajax调用返回HTML,我在我的视图中有以下代码片段

if request.is_ajax(): 
t = loader.get_template('frontend/scroll.html')
html = t.render(RequestContext({'dishes': dishes})
return HttpResponse(json.dumps({'html': html}))

和我的Ajax

  $.ajax({
           type: "POST",
           url: "/filter_home", 
           data: {'name': 'me', 'csrfmiddlewaretoken': '{{csrf_token}}'},
           success : function(data) {
                $('.row.replace').html(data);
            }
   });

它会抛出错误

Exception Value:    'dict' object has no attribute 'META'
Exception Location: /opt/bitnami/apps/django/lib/python2.7/sitepackages/django/core/context_processors.py in debug, line 39
提问于
用户回答回答于

需要使用render_to_string

也不需要将HTML转换为json,因为直接替换了内容。

把所有这些放在一起你有:

from django.template.loader import render_to_string

if request.is_ajax():
    html = render_to_string('frontend/scroll.html', {'dishes': dishes})
    return HttpResponse(html)

在你的前端,你需要:

$.ajax({
        type: "POST",
        url: "/filter_home", 
        data: {'name': 'me', 'csrfmiddlewaretoken': '{{ csrf_token }}'},
        success : function(data) {
             $('.row.replace').html(data);
         }
});
用户回答回答于

RequestContext的第一个参数是一个请求对象。

可以添加请求对象,也可以使用Context类。

扫码关注云+社区

领取腾讯云代金券