【发布时间】:2011-09-07 17:11:19
【问题描述】:
有没有办法从另一个模板文件中加载 jinja2 模板?像
{{ render_template('path/to/file.html') }}
我有一些我想重复使用的 sn-ps,所以拥有这个功能对我来说很重要。
【问题讨论】:
标签: jinja2
有没有办法从另一个模板文件中加载 jinja2 模板?像
{{ render_template('path/to/file.html') }}
我有一些我想重复使用的 sn-ps,所以拥有这个功能对我来说很重要。
【问题讨论】:
标签: jinja2
{% include "file" %} 这样做。请参阅jinja2 docs 了解更多信息。
【讨论】:
template params 传递给include 调用的方法。你能澄清一下是否可能吗?
<style>标签中吗?
使用extends 标记或include 标记,具体取决于您希望如何设计多文件视图。
【讨论】:
您应该使用{% macro -%}s 制作模板文件,并使用{% 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 相同的行为)。
这通常比为每个习语制作新模板或使用继承要好,后者是一种特殊情况的解决方案(如果您想在一个模板中多次使用 sn-p 怎么办)?
【讨论】: