Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Templates 通过列表/字典传递Jinja2宏参数_Templates_Macros_Arguments_Parameter Passing_Jinja2 - Fatal编程技术网

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

Templates 通过列表/字典传递Jinja2宏参数,templates,macros,arguments,parameter-passing,jinja2,Templates,Macros,Arguments,Parameter Passing,Jinja2,我有一个具有多个参数的Jinja2宏。我想使用列表或字典设置这些参数,例如: {% macro mymacro(foo, bar) -%} foo: {{ foo }} bar: {{ bar }} {%- endmacro %} {% set args=[1, 2] %} {{ mymacro(args) }} 预期产出: foo: 1 bar: 2 但是,这不起作用,因为args中的列表被完全分配给foo,而bar保持为空 有没有办法做到这一点?只需使用将列表参数解包为参数即可。它

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

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

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

{{ mymacro(args) }}
预期产出:

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

有没有办法做到这一点?

只需使用将列表参数解包为参数即可。它是一个python操作符,但显然Jinja2也支持它,尽管它没有文档记录

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

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

{{ mymacro(*args) }}
只需使用将列表参数解压缩为参数。它是一个python操作符,但显然Jinja2也支持它,尽管它没有文档记录

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

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

{{ mymacro(*args) }}