2015-03-05 7 views
8

jinja2 में अपरिभाषित चर के साथ काम करने के लिए 'डिफ़ॉल्ट()' फ़िल्टर है। लेकिन यह शब्दकोश मूल्यों के साथ काम नहीं करता है।jinja2 (ansible) में शब्दकोश के लिए डिफ़ॉल्ट मान

अगर डी है या नहीं हो सकता है कुंजी foo है (डी [foo]), की तुलना में:

{{ D[foo]|default ('no foo') }} 
होगा

प्रिंट 'नहीं foo' अगर डी अपरिभाषित है, लेकिन त्रुटि ('dict वस्तु' का कारण होगा है कोई विशेषता 'foo') यदि डी परिभाषित किया गया है, लेकिन डी [foo] अपरिभाषित है।

शब्दकोश आइटम के लिए डिफ़ॉल्ट बनाने का कोई तरीका है?

उत्तर

9

यह उत्तरदायी 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" 
} 
+0

धन्यवाद। यह काम करता हैं। और मुझे अलग-अलग जगह पर गलती मिली, जिससे भ्रमित रूप से इसी तरह की त्रुटि हुई। –

संबंधित मुद्दे