你可以使用宏。
{% macro line(key, value) -%}
{% if not value|none %}{{ key }} = {{ value }}{% endif %}
{%- endmacro %}
然后只需为每个键/值对调用宏。
{{ line('foo_bar', foobar) }}
{{ line('bar_foo', barfoo) }}
不过,在边缘情况下可能会出现问题。如果foobar
或barfoo
未定义,它可能会引发错误。在宏中,value
无论如何都会被定义,因此条件is defined
不再有意义。但是,如果 null/none 实际上是任何变量的有效值,那么您就碰壁了……
更长一点但可能防水:
{% macro line(key, value) -%}
{% if value != omit %}{{ key }} = {{ value }}{% endif %}
{%- endmacro %}
{{ line('foo_bar', foobar|default(omit)) }}
{{ line('bar_foo', barfoo|default(omit)) }}