2014-09-22 6 views
0

У меня есть блок, который выглядит следующим образом:Блоки кода в шаблонах дзиндзя в соли

{% 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

Вы можете определить просмотровой словарь, и включают в себя только нетривиальные случаи:

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

здесь, так как dev и staging не изменены, вы можете использовать dict.get откате аргумент.

+1

отличный пример использования dict() внутри объявления набора переменных jinja2 invents_gusts_grain – dreftymac