我有jinja2模板,它以'keys:value'的形式從yaml獲取數據變量。如何檢查鍵變量是否存在,並防止在jinja2模板中鍵+值爲空的打印行
問題是當我運行jinja2模板時,它會打印出具有空'值'的行。
我該怎麼做,以便它不會打印空行。否則,它將顯示爲無。
例如;
-Template
set first {{ABC}}
set second {{DEF}}
set third {{GHI}}
-yaml數據
ABC : data1
DEF :
GHI : data3
如果我運行它,它都註明;
set first data1
set second None
set third data3
我不希望它是這樣。我想要它打印;
set first data1
set third data3
如何做到這一點?通過防止行被添加,如果變量未定義。
感謝,
更新腳本: -
TEMPLATE_FILE = { 'trial_1': 'trial.tcl' }
for f,s in TEMPLATE_FILE.items():
template = templateEnv.get_template(s)
with open('tmp.yaml', 'rb') as stream:
try:
yaml_input_data = yaml.load(stream)
except yaml.YAMLError as exc:
pass
print(yaml_input_data)
for k, v in yaml_input_data.items():
if v is None:
yaml_input_data.pop(k)
print(yaml_input_data)
with open(f, 'w') as outfile:
outfile.writelines(template.render(yaml_input_data))
print '\nWrote',f
更新Jinja2的模板
{% for k, v in yaml_input_data.iteritems() %}
{# use k, v #}
set first {{ABC}}
set second {{DEF}}
set third {{GHI}}
{% endfor %}
您沒有使用變量'k'和'v'。這可能會幫助您瞭解事情的工作原理 - http:// stackoverflow。com/questions/19141073/rendering-a-python-dict-in-jinja2-werkzeug 我建議學習python如何與Jinja交互以及Jinja如何工作的基本知識。這是一個很好的例子,使用Flask,但概念可以概括 - https://realpython.com/blog/python/primer-on-jinja-templating/ – Aditya