代码之家  ›  专栏  ›  技术社区  ›  carlfriedrich

通过列表/字典传递jinja2宏参数

  •  1
  • carlfriedrich  · 技术社区  · 6 年前

    我有一个有多个参数的jinja2宏。我想使用列表或字典设置这些参数,例如:

    {% macro mymacro(foo, bar) -%}
    foo: {{ foo }}
    bar: {{ bar }}
    {%- endmacro %}
    
    {% set args=[1, 2]  %}
    
    {{ mymacro(args) }}
    

    预期输出:

    foo: 1
    bar: 2
    

    但是,这不起作用,因为 args 分配给 foo 完全,而 bar 保持为空。

    有没有办法做到这一点?

    1 回复  |  直到 6 年前
        1
  •  1
  •   blhsing    6 年前

    只需使用 * operator 打开列表 args 变为论点。它是一个python操作符,但显然jinja2也支持它,即使它没有文档记录。

    {% macro mymacro(foo, bar) -%}
    foo: {{ foo }}
    bar: {{ bar }}
    {%- endmacro %}
    
    {% set args=[1, 2]  %}
    
    {{ mymacro(*args) }}