【问题标题】:default value for dictionary in jinja2 (ansible)jinja2 中字典的默认值(ansible)
【发布时间】:2015-05-07 06:07:26
【问题描述】:

jinja2 有过滤器“|default()”来处理未定义的变量。但它不适用于字典值。

如果 D 可能有或没有键 foo (D[foo]),则:

{{ D[foo]|default ('no foo') }}

如果 D 未定义,将打印 'no foo',但如果 D 已定义,但 D[foo] 未定义,则会导致错误('dict object' 没有属性 'foo')。

有什么方法可以为字典项设置默认值吗?

【问题讨论】:

    标签: jinja2 ansible


    【解决方案1】:

    这似乎对我使用 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"
    }
    

    【讨论】:

    • 谢谢。有用。而且我在不同的地方发现了错误,导致了令人困惑的类似错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-29
    • 2019-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多