[英]default value for dictionary in jinja2 (ansible)
jinja2使用過濾器'| default()'來處理未定義的變量。 但它不適用於字典值。
如果D可能有或沒有密鑰foo(D [foo]),那么:
{{ D[foo]|default ('no foo') }}
如果D未定義,將打印'no foo',但如果定義了D,則會導致錯誤('dict對象'沒有屬性'foo'),但D [foo]未定義。
有沒有辦法讓字典項目默認?
這似乎對我使用Ansible 1.7.2正常工作。 這是我剛剛寫的測試劇本:
---
- hosts: localhost
vars:
D:
1 : "one"
2 : "two"
tasks:
- debug: var=D
- debug: msg="D[1] is {{ D[1]|default ('undefined') }}"
- debug: msg="D[3] is {{ D[3]|default ('undefined') }}"
以下是運行它的輸出:
TASK: [debug var=D] ***********************************************************
ok: [localhost] => {
"D": {
"1": "one",
"2": "two"
}
}
TASK: [debug msg="D[1] is one"] ***********************************************
ok: [localhost] => {
"msg": "D[1] is one"
}
TASK: [debug msg="D[3] is undefined"] *****************************************
ok: [localhost] => {
"msg": "D[3] is undefined"
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.