4
比方說,我有此模板的宏(這是簡化的):重新定義進口神社宏
{# macros.html #}
{% macro a(opts = {}) %}
{{ opts.a }}
{% endmacro %}
{% macro b(opts = {}) %}
{{ opts.b }}
{% endmacro %}
而這其中包含了覆蓋
{# macros_override.html #}
{% macro a(opts = {}) %}
Overridden: {{ opts.a }}
{% endmacro %}
然後,我想有一個模板與同一個命名空間macros
{# template.html #}
{% import 'macros.html' as macros %}
{% import 'macros_override.html' as macros %}
{{ macros.a({ 'a': 'foo' }) }}
{{ macros.b({ 'b': 'bar' }) }}
,我希望輸出下的所有這些宏:
Overridden: foo
bar
但是b
未定義。我試圖改變macros_override.html
模板是這樣的:
{# macros_override.html #}
{% extends 'macros.html' %}
{% macro a(opts = {}) %}
Overridden: {{ opts.a }}
{% endmacro %}
,然後導入只覆蓋模板作爲宏但宏觀a
沒有在這種情況下無效,我真的不知道爲什麼。
我可以通過另一個導入以某種方式覆蓋在jinja中的導入的宏嗎?