如何刷新django模板中的某个元素?
例如:
{% if object.some_m2m_field.all %}
<h3>The stuff I want to refresh is below</h3>
<div id="the-div-that-should-be-refreshed">
{% for other_object in object.some_m2m_field.all %}
<a href="www.example.com">{{ other_object.title }}</a>
{% endfor %}
</div>
{% endif %}
让我们说页面中的其他一些元素会触发一个应该刷新上面div的javascript。有没有办法让django刷新模板中的这个特定元素?
如果没有,我将不得不使用常规JS或jQuery方法对div进行修补,而不是使用django模板层的强大功能。另外,上面的代码是对实际模板的简化,我使用了很多模板的功能,所以猴子修补生成的html将是一场噩梦......
答案 0 :(得分:29)
您可以使用异步请求来填充div元素。 django使用模板引擎回答异步请求。
在这种情况下,您必须将div元素的模板代码外包到单独的模板文件中。
更新示例:
<强>使用Javascript:强>
要异步刷新视图,请使用JQuery,例如:
$.ajax({
url: '{% url myview %}',
success: function(data) {
$('#the-div-that-should-be-refreshed').html(data);
}
});
异步查看:
def myview(request):
object = ...
return render_to_response('my_template.html', { 'object': object })
<强>模板:强>
{% for other_object in object.some_m2m_field.all %}
<a href="www.example.com">{{ other_object.title }}</a>
{% endfor %}
祝你好运!
答案 1 :(得分:2)
你可以看看例如。这Ajax with Django tutorial。无论如何,如上所述,无论是在普通请求还是在ajax请求中调用视图,都可以使用django的模板引擎!如果你必须更频繁地使用带有django的ajax,那么看看像dajax这样的东西是有意义的,这是django的ajax库(看看那里的教程)。