有没有办法直接在模板中使用 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 }} );