目的是检查变量是否为整数,如果是则插入 hello。
尝试
{% if int(variable) %} hello {% endif %}
结果
'int' is undefined"
int
内置过滤器(尝试将值转换为 int):您需要使用过滤格式,如下所示:
{% if variable|int != 0 %} hello {% endif %}
默认情况下,如果转换为 int 失败,则返回 0,但您可以通过指定不同的默认值作为第一个参数来更改此设置。在这里,对于 0 可能是
variable
的有效值的情况,我将其更改为 -1。
{% if variable|int(-1) != -1 %} hello {% endif %}
请参阅:Jinja2 文档 - int 内置过滤器了解更多信息
number
内置测试(如果变量已经是数字,则返回 true):更好的解决方案是使用内置测试
int
,而不是使用 number
过滤器(它将像字符串这样的整数转换为 int),如下所示:
{% if variable is number %} hello {% endif %}
对于任何使用 Salt 的人来说,当 put 处于 saltstack 状态时,这对我不起作用。
{% if variable|number %} hello {% endif %}
但这确实有效:
{% if variable is number %} hello {% endif %}
这些解决方案都不适合我,但这确实有效:
{% if variable is even or variable is odd %}
测试上述解决方案时存在测试问题
is number
,它在字符串变量上失败,即 '123'
亚姆尔:
val:
- '123'
- 456
- '3bce'
金贾:
{% for v in val %}
{% if v is number %}
Is number test: {{ v }}
{% endif %}
{% if v|int != 0 %}
To int test: {{ v }}
{% endif %}
{% endfor %}
结果:
To int test: 123
Is number test: 456
To int test: 456