有没有办法直接在模板中使用 jinja2 `range` 函数的列表输出?

问题描述

我正在使用 jinja2 来模板化超级对撞机启动文件

我有一个变量 {{ sc_option_numOutputBusChannels }},我需要从中生成一个列表。

具体来说,如果 sc_option_numOutputBusChannels = 8,那么我需要创建以下列表:

[0,2,4,6]

在行中使用:

~dirt.start(57120,[0,6]);

函数 range(0,sc_option_numOutputBusChannels,2 ) 根据我的需要完全输出该列表,但我一直无法找到一种方法range输出直接用作字符串在我的模板中 - 例如这些不起作用

~dirt.start(57120,{% range(0,2 ) %} );

~dirt.start(57120,{{ range(0,2 ) }} );

有没有办法做到这一点?

解决方法

我猜这是因为 range 本身就是一个生成器,因此需要一个使用者向 ansible 表明您已经完成了生成器管道;我所知道的最常见的是| list

- debug:
    msg: ~dirt.start(57120,{{ range(0,sc_option_numOutputBusChannels,2 ) | list }} );

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...