Jinja 2挡宏内?

时间:2015-05-13 15:26:28

标签: python macros jinja2

我的基本模板包含像这样的宏

{%- macro local_vars(d) -%}
{%- block local_vars %}
{% endblock -%}
{%- endmacro -%}

所以我想在子模板中覆盖这个块,仍然使用变量" d"来自基本模板。我试过这个:

{%- block local_vars -%}
{{d.out.type}} {{d.component_name}}_out;
{%- endblock -%}

,但我收到错误:

UndefinedError: 'd' is undefined.

我还尝试在基本模板中的块内创建新变量,并使用{{super}}访问它:

base:
{%- macro local_vars(d) -%}
{%- block local_vars %}
    {% set dict = d%}
{% endblock -%}
{%- endmacro -%}

child:
{%- block local_vars -%}
{{super}}
{{dict.out.type}} {{dict.component_name}}_out;
}
{%- endblock -%}

,但这也不起作用。我只收到新的错误:

UndefinedError: 'function object' has no attribute 'out'

我以前没有使用过积木,所以任何帮助都会受到高度赞赏。 如果有办法将变量传递给子模板中的块,那对我来说这将是最轻松的解决方案,但我已经开始寻求建议。

提前致谢。

0 个答案:

没有答案