刷新django模板生成的<div>元素

Jon*_*han 14 html javascript django refresh django-templates

如何刷新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>
        &nbsp;
    {% endfor %}
    </div>
{% endif %}
Run Code Online (Sandbox Code Playgroud)

让我们说页面中的其他一些元素会触发一个应该刷新上面div的javascript.有没有办法让django刷新模板中的这个特定元素?

如果没有,我将不得不使用常规JS或jQuery方法对div进行修补,而不是使用django模板层的强大功能.另外,上面的代码是对实际模板的简化,我使用了很多模板的功能,因此猴子修补生成的html将是一场噩梦......

小智 29

您可以使用异步请求来填充div元素.django使用模板引擎回答异步请求.

在这种情况下,您必须将div元素的模板代码外包到单独的模板文件中.

更新示例:

Javascript:
要异步刷新视图,请使用JQuery作为示例:

$.ajax({
  url: '{% url myview %}',
  success: function(data) {
  $('#the-div-that-should-be-refreshed').html(data);
  }
});
Run Code Online (Sandbox Code Playgroud)

异步查看:

def myview(request):
    object = ...
    return render_to_response('my_template.html', { 'object': object })
Run Code Online (Sandbox Code Playgroud)

模板:

{% for other_object in object.some_m2m_field.all %}
    <a href="www.example.com">{{ other_object.title }}</a>
    &nbsp;
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

最好的祝福!