如何导入嵌套的 jinja 宏?

问题描述 投票:0回答:1

我想将嵌套的 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 语法来引入宏,但我永远无法成功。

其余文件永远无法解析宏查找。

jinja2 python-sphinx restructuredtext
1个回答
0
投票

我有完全相同的问题并找到了一种有效的方法。诀窍是您的

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
语法就足够了。

© www.soinside.com 2019 - 2024. All rights reserved.