有没有办法直接在模板中使用 jinja2 `range` 函数的列表输出?
Is there a way to use the list output from a jinja2 `range` function directly in a template?
我正在使用 jinja2 来制作超级对撞机启动文件的模板。
我有一个变量 {{ sc_option_numOutputBusChannels }}
,我需要从中生成一个列表。
具体来说,如果 sc_option_numOutputBusChannels = 8
,那么我需要创建以下列表:
[0, 2, 4, 6]
在行中使用:
~dirt.start(57120, [0, 2, 4, 6]);
函数 range(0, sc_option_numOutputBusChannels, 2 )
完全按照我的需要输出 列表,但我一直无法找到使用 [=16= 输出的方法] 直接作为我模板中的字符串 - 例如这些 不 工作:
~dirt.start(57120, {% range(0, sc_option_numOutputBusChannels, 2 ) %} );
~dirt.start(57120, {{ range(0, sc_option_numOutputBusChannels, 2 ) }} );
有办法吗?
我猜这是因为 range
本身就是一个生成器,因此需要一个消费者向 ansible 表明你已经完成了生成器管道;我知道的最常见的是 | list
- debug:
msg: ~dirt.start(57120, {{ range(0, sc_option_numOutputBusChannels, 2 ) | list }} );
我正在使用 jinja2 来制作超级对撞机启动文件的模板。
我有一个变量 {{ sc_option_numOutputBusChannels }}
,我需要从中生成一个列表。
具体来说,如果 sc_option_numOutputBusChannels = 8
,那么我需要创建以下列表:
[0, 2, 4, 6]
在行中使用:
~dirt.start(57120, [0, 2, 4, 6]);
函数 range(0, sc_option_numOutputBusChannels, 2 )
完全按照我的需要输出 列表,但我一直无法找到使用 [=16= 输出的方法] 直接作为我模板中的字符串 - 例如这些 不 工作:
~dirt.start(57120, {% range(0, sc_option_numOutputBusChannels, 2 ) %} );
~dirt.start(57120, {{ range(0, sc_option_numOutputBusChannels, 2 ) }} );
有办法吗?
我猜这是因为 range
本身就是一个生成器,因此需要一个消费者向 ansible 表明你已经完成了生成器管道;我知道的最常见的是 | list
- debug:
msg: ~dirt.start(57120, {{ range(0, sc_option_numOutputBusChannels, 2 ) | list }} );