2015-12-02 2 views
0

Я пытаюсь получить некоторую переменную из столбца и передать переменную как имя ключа, чтобы получить из столбца, но что-то кажется отсутствующим. Я попробовал несколько комбинаций, но никто не работает.Блок внутри блока в Jinja2

В первой строке - я получаю key-house_name, а затем во второй строке хочу динамически получить соответствующее значение для этого ключа из Pillar. Часть ключа статические (дома: список) и динамические (часть house_name)

{% for house_name in event_data.house_list|list %} 
{% set home_def = salt['pillar.get']('homes:list:{{ house_name }}') %} 
... 
{% endfor %} 

Когда я жёстко на house_name во второй строке - все работает нормально - а это значит, что-то в оказании ключа с пространством имен является неправильным. Несколько комбинаций, которые я пытался, но не работают на второй линии:

{% set home_def = salt['pillar.get']('homes:list:'{{ house_name }}) %} 
{% set home_def = salt['pillar.get']("homes:list:{{ house_name }}") %} 

ответ

1

вам не нужно использовать {{}} скобки в set заявлении

{% for house_name in event_data.house_list|list %} 
{% set home_def = salt['pillar.get']('homes:list:{}'.format(house_name)) %} 
... 
{% endfor %} 
+0

Это работало как шарм, спасибо за тонну. Я понимаю, что у меня отсутствует какая-то базовая синтаксическая документация - любые указатели? –

+1

В Jinja2 двойные фигурные скобки используются как оператор печати. Если вы обращаетесь к переменным внутри тегов, не помещайте скобки вокруг них. См. Раздел 'variables' в документации: http://jinja.pocoo.org/docs/dev/templates/#variables –

+0

, как он будет работать, если есть два динамических значения, например: homes: list: {}: {}, где две круглые скобки, где мне нужно поставить две переменные –

Смежные вопросы