【问题标题】:Passing Jinja2 macro parameters via list/dictionary通过列表/字典传递 Jinja2 宏参数
【发布时间】:2018-11-28 15:30:10
【问题描述】:

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

{% macro mymacro(foo, bar) -%}
foo: {{ foo }}
bar: {{ bar }}
{%- endmacro %}

{% set args=[1, 2]  %}

{{ mymacro(args) }}

预期输出:

foo: 1
bar: 2

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

有没有办法做到这一点?

【问题讨论】:

    标签: templates macros arguments parameter-passing jinja2


    【解决方案1】:

    只需使用* operator 将列表args 解压缩为参数。它是一个 python 运算符,但显然 Jinja2 也支持它,即使它没有文档。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-10
      • 2019-07-06
      • 1970-01-01
      相关资源
      最近更新 更多