2016-11-17 46 views
0

如何避免jinja2 + python打印YAML中沒有「值」的行('key':'values')。如何禁用jinja2模板打印YAML中的undefine值

假設我在.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 :),爲什麼它的打印與該變量爲無行(set color None)?我怎麼能忽略沒有'價值'的那一行?

回答

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 %} 
+0

如果我有更多的語句需要進行檢查。什麼是正確的方法來做到這一點? – nk14

+0

增加了一個例子。正確的方法是有項目的字典,並使用循環來生成yaml文件。如果你需要保持項目的順序,那麼使用collections.OrderedDict。 – Dauros