有没有办法可以从另一个模板文件中加载jinja2模板?像
这样的东西{{ render_template('path/to/file.html') }}
我有一些我想重复使用的片段,因此拥有此功能对我很重要。
答案 0 :(得分:30)
{% include "file" %}
这样做。有关详细信息,请参阅jinja2 docs。
答案 1 :(得分:7)
使用extends
标记或include
标记,具体取决于您希望如何设计多文件视图。
答案 2 :(得分:5)
您应使用{% macro -%}
个模板文件,并使用{% import "file" as file %}
来使用其他模板文件中的宏。参见the docs.
这里是一个例子:
<!- in common_macros.html ->
{% macro common_idiom1(var1, var2, ... varN) -%}
<!- your idiom, where you can use var1 through varN ->
{%- endmacro %}
<!- in my_template.html ->
{% import "common_macros.html" as idioms %}
{{ idioms.common_idiom1(a, b, ... N) }}
具体来说,此答案允许OP将参数传递给他的宏,类似于他想要的行为,例如render_template的行为(仅包含文件,因为前面的答案已经说明了,其行为与render_template相同)。
这通常比为每个习语制作一个新的模板要好,或者比使用继承(这是一种特殊情况的解决方案)(如果要在一个模板中多次使用代码段)要好吗?