盐中Jinja模板中的代码块

时间:2014-09-22 19:37:23

标签: python salt jinja2

我有一个看起来像这样的块:

{% if grains['function'] == 'production' %}
{% set conf_src = "prod.yml.ninja" %}
{% elif grains['function'] == 'staging'] %}
{% set conf_src = "staging.yml.ninja" %}
{% elif grains['function'] == 'dev'] %}
{% set conf_src = "dev.yml.ninja" %}
{% endif %}

有没有办法做类似

的事情
{% 
    if grains['function'] == 'production'
        set conf_src = "prod.yml.ninja"
    elif grains['function'] == 'staging'
        set conf_src = "staging.yml.ninja"
    elif grains['function'] == 'dev'
        set conf_src = "dev.yml.ninja"
    endif
%}

所以我可以打开块一次吗?

1 个答案:

答案 0 :(得分:1)

您可以定义查找词典,并且只包含非平凡的案例:

html = '''
{% set lookup = dict(production='prod') %}
{% set conf_src = lookup.get(grains['function'], grains['function']) 
                + '.yml.ninja' %}
'''

此处,由于未修改devstaging,您可以使用dict.get后退参数。