通过Ajax返回呈现的Html [英] Returning Rendered Html via Ajax
本文介绍了通过Ajax返回呈现的Html的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如果请求.is_ajax():
t = loader.get_template('frontend / scroll.html')
html = t.render(RequestContext({'dishes':dishes})
return HttpResponse .dumps({'html':html}))
和我的Ajax
$ .ajax({
type:POST,
url:/ filter_home,
data: {'name':'me','csrfmiddlewaretoken':'{{csrf_token}}'},
success:function(data){
$('。row.replace').html );
}
});
它会抛出以下错误
异常值:'dict'对象没有属性'META'
异常位置:/ opt / bitnami / apps /第39行中的django / lib / python2.7 / sitepackages / django / core / context_processors.py
我做错了什么?
解决方案
您的代码有一些问题:
您需要使用 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 a){
$('。row.replace')。html(data);
}
});
I am trying to return html via and Ajax call and I have the following snippet of code in my view
if request.is_ajax():
t = loader.get_template('frontend/scroll.html')
html = t.render(RequestContext({'dishes': dishes})
return HttpResponse(json.dumps({'html': html}))
and my Ajax
$.ajax({
type: "POST",
url: "/filter_home",
data: {'name': 'me', 'csrfmiddlewaretoken': '{{csrf_token}}'},
success : function(data) {
$('.row.replace').html(data);
}
});
and it throws the following error
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
what am I doing wrong?
解决方案
There are a few issues with your code:
You need to use render_to_string
.
You also don't need to convert your HTML into json because you are replacing the contents directly.
Putting all this together you have:
from django.template.loader import render_to_string
if request.is_ajax():
html = render_to_string('frontend/scroll.html', {'dishes': dishes})
return HttpResponse(html)
In your front end, you need:
$.ajax({
type: "POST",
url: "/filter_home",
data: {'name': 'me', 'csrfmiddlewaretoken': '{{ csrf_token }}'},
success : function(data) {
$('.row.replace').html(data);
}
});
这篇关于通过Ajax返回呈现的Html的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文