如何禁用jinja2模板在YAML中打印undefine值

时间:2016-11-17 01:51:08

标签: python-2.7 jinja2

如何避免jinja2 + python打印YAML中没有“值”的行('key':'values')。

假设我在.yaml文件中有一个变量列表。例如:

- Fruit : Orange
- Color : Red
- Food : Noodle

我有一个模板,可以从yaml文件中获取数据。例如: -

- set fruit {{FRUIT}}
- set color {{COLOR}}
- set food {{FOOD}}

结果将打印为: -

set fruit Orange
set color Red
set food Noodle

但是,如果未定义一个或多个yaml数据(Color :),为什么它将该变量的行打印为None(set color None)?如何忽略没有'值'的行?。

1 个答案:

答案 0 :(得分:0)

您可以在if statement中过滤掉空值的行:

{% if FRUIT %}
- set fruit {{FRUIT}}
{% endif %}
{% if COLOR %}
- set color {{COLOR}}
{% endif %}
{% if FOOD %}
- set food {{FOOD}}
{% endif %}

或者你有一个带键/值的词典,你可以在loop中使用它来使它更紧凑。例如:

dict_of_items = {'fruit': 'Orange', 'color': 'Red', 'food': 'Noodle'}

然后:

{% for key, value in dict_of_items.iteritems() %}
- set {{key}} {{value}}
{% endfor %}