使用
请注意
横向重用是一种先进的树枝特性几乎不需要在常规模板。主要使用的项目,需要做模板块可重用不使用继承。
模板继承最强大的特性之一是树枝,但仅限于单继承;模板只能扩展另一个模板。这个限制使得模板继承容易理解和容易调试:
1 2 3 4
{%扩展”基地。html“%}{%块标题%}{%endblock%}{%块内容%}{%endblock%}
横向重用是一个方式来达到相同的目标多重继承,但是没有相关的复杂性:
1 2 3 4 5 6
{%扩展”基地。html“%}{%使用“街区。html“%}{%块标题%}{%endblock%}{%块内容%}{%endblock%}
的使用
声明告诉树枝导入模块中定义blocks.html
到当前模板(就像宏,但对于块):
1 2 3
{#块。html #}{%块侧边栏%}{%endblock%}
在这个例子中,使用
语句导入侧边栏
块到主模板。代码大部分是相当于以下一个(自动导入的模块不输出):
1 2 3 4 5
{%扩展”基地。html“%}{%块侧边栏%}{%endblock%}{%块标题%}{%endblock%}{%块内容%}{%endblock%}
请注意
的使用
标签只进口一个模板如果不延长另一个模板,如果没有定义宏,如果身体是空的。但它可以使用其他模板。
请注意
因为使用
语句解决独立于上下文传递给模板,模板参考不能一个表达式。
主要的模板也可以覆盖任何进口块。如果已经定义了模板侧边栏
块,然后中定义的一个blocks.html
将被忽略。为了避免名称冲突,您可以重命名导入:
1 2 3 4 5 6 7
{%扩展”基地。html“%}{%使用“街区。html”与base_sidebar栏、标题base_title %}{%块侧边栏%}{%endblock%}{%块标题%}{%endblock%}{%块内容%}{%endblock%}
的父()
函数自动确定正确的继承树,所以可以用它当覆盖一块中定义导入模板:
1 2 3 4 5 6 7 8 9 10
{%扩展”基地。html“%}{%使用“街区。html“%}{%块侧边栏%}{{父()}}{%endblock%}{%块标题%}{%endblock%}{%块内容%}{%endblock%}
在这个例子中,父()
将正确调用侧边栏
块的blocks.html
模板。
提示
重命名可以模拟继承通过调用“父”:
1 2 3 4 5 6 7
{%扩展”基地。html“%}{%使用“街区。html”栏parent_sidebar %}{%块侧边栏%}{{块(“parent_sidebar”)}}{%endblock%}
请注意
您可以使用尽可能多的使用
声明在任何给定的模板。如果两个导入模板定义相同的块,最新的一个胜利。