我有一个像这样的基本模板(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}
,或者达到相同的方式。有任何想法吗?
您可以像这样使用block.super:
第三方模板:
{% block content %}
<h1>3rd Party Content</h1>
{% endblock %}
你的模板:
{% block content %}
<div class="wrapper">{{ block.super }}</div>
{% endblock content %}
在base.html中,在{%block content%}的任一侧添加pre_content和post_content块,然后在tp.html中将您的和标记添加到这些块。稍微不优雅,但它会工作,你不必修改所有模板。