我正在尝试通过和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
我做错了什么?
发布于 2013-09-24 16:26:10
你的代码有几个问题:
您需要使用render_to_string
。
您也不需要将HTML转换为json,因为您将直接替换内容。
把所有这些放在一起,你就有了:
from django.template.loader import render_to_string
from django.http import HttpResponse
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);
}
});
发布于 2013-09-24 16:23:27
RequestContext的第一个参数是一个请求对象。
您可以添加请求对象,也可以使用Context类。
发布于 2013-09-24 16:24:08
RequestContext()
的第一个参数应该是request
,因此将代码行更新为
html = t.render(RequestContext(request, {'dishes': dishes})
https://stackoverflow.com/questions/18976302
复制相似问题