jinjia2 的渲染模板,在 web 渲染 /ansible 渲染 /helm 渲染都有遇到过这个问题。 当 value 的值是 bool 类型的 false,就会变成了 defalut 过滤器的第二个参数。 是否存在避免这类问题更好的写法,不用去关心 value 的值类型通用的写法。
Hey {{ value|default "there" }}
官方的建议是
Hey {{ value |default("there", true) }},
用if判断就可以解决 找到了,可以这么用
{{- if or .Values.myVar (not (hasKey .Values "myVar")) }}
...
{{- end }}
1
ipwx 2021-10-08 11:34:09 +08:00
自己写一个过滤器啊,多简单
env.filters['default2'] = lambda v, alt: ... |
2
Macv1994 2021-10-08 12:22:33 +08:00
可以自己自定义一个过滤器
|
3
chenqh 2021-10-08 17:39:44 +08:00
jinja 其实没有必要写过滤器呀, 他支持自己写的函数呀
直接 `{{fn_default(value, "there")}}` 不就好了码? |