我想将嵌套的 jinja 宏导入到其余文件中并调用它。
因此,我们有 main.rst 文件,它导入了 collection_of_macros.jinja,并且在 collection_of_jinja_macros.jinja 中是导入 jinja 宏的导入列表。
main.rest file has:
{% import 'path/collection_of_jinja_macros.jinja' as macros%}
{{macros.macro1() }}
then the collection_of_jinja_macros.jinja has
{% include 'path/macro1.jinja' %}
{% include 'path/macro2.jinja' %}
我尝试过使用 include、import 和 toctree 语法来引入宏,但我永远无法成功。
其余文件永远无法解析宏查找。
我有完全相同的问题并找到了一种有效的方法。诀窍是您的
collection_of_jinja_macros.jinja
不仅需要导入宏,还需要 {% set %}
一个等于相同名称的变量。更新您的示例:
# collection_of_jinja_macros.jinja
{% include 'path/macro1.jinja' as macro1 %}
{% include 'path/macro2.jinja' as macro2 %}
{% set macro1 = macro1 %}
{% set macro2 = macro2 %}
如果您这样做,则可以执行以下操作:
# main.rest
{% import 'path/collection/of_jinja_macros.jinja' as macros %}
{{ macros.macro1.someMacroName() }}
{{ macros.macro2.someOtherMacroName() }}
我希望使用
import ... as
语法就足够了。