小编vxs*_*xsx的帖子

重新定义导入的jinja宏

假设我有这个带有宏的模板(这些是简化的):

{# macros.html #}
{% macro a(opts = {}) %}
   {{ opts.a }}
{% endmacro %}

{% macro b(opts = {}) %}
   {{ opts.b }}
{% endmacro %}
Run Code Online (Sandbox Code Playgroud)

而这一个包含覆盖

{# macros_override.html #}
{% macro a(opts = {}) %}
    Overridden: {{ opts.a }}
{% endmacro %}
Run Code Online (Sandbox Code Playgroud)

然后我希望在同一名称空间下有一个包含所有这些宏的模板 macros

{# template.html #}
{% import 'macros.html' as macros %}
{% import 'macros_override.html' as macros %}

{{ macros.a({ 'a': 'foo' }) }}
{{ macros.b({ 'b': 'bar' }) }}
Run Code Online (Sandbox Code Playgroud)

和我期望的输出:

Overridden: foo
bar
Run Code Online (Sandbox Code Playgroud)

但是b …

jinja2

5
推荐指数
1
解决办法
1147
查看次数

标签 统计

jinja2 ×1