簡體   English   中英

jinja2中字典的默認值(ansible)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM