如何在django模板中的块周围包装一些html?

时间:2014-03-06 18:41:08

标签: django django-templates

我有一个基本模板(base.html),如下所示:

<doctype html> etc etc
{% block content %}{% endblock %}

我的网站中的许多其他模板都使用它,但我有一个第三方应用,它附带自己的模板,继承自tp.html,后者继承自base.html。这些模板大多都很好但我需要将它们的content块包装在div中。我可以更改第三方模板以使用sub_content块并像这样修改tp.html

{% extends "base.html" %}
{% block content %}
    <div class="third-party-app">
        {% block sub_content %}{% endblock %}
    </div>
{% endbock %}

但我不想修改第三方应用中的所有模板。

我想要的是与Smarty模板中找到的{$smarty.block.child}类似的东西,或者实现相同的方法。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

您可以像这样使用block.super:

第三方模板:

  {% block content %}
    <h1>3rd Party Content</h1>
  {% endblock %}

你的模板:

{% block content %}
  <div class="wrapper">{{ block.super }}</div>
{% endblock content %}

答案 1 :(得分:0)

在base.html中,在{%block content%}的任一侧添加pre_content和post_content块,然后在tp.html中将您的和标记添加到这些块中。略显不雅,但它会起作用,你不必修改所有的模板。