2015-12-04 5 views
-1

Как определить переменную в шаблоне Genshi для повторного использования?Определение переменной в шаблоне Genshi

Скажем, у меня есть два вложенных для петель:

<div py:for="i in xrange(5)> 
    <div py:for=j in xrange(10)> 
     <!-- do something with "i * j" --> 
     <!-- do something else with "i * j" --> 
     <!-- do yet another thing with "i * j" --> 
    </div> 
</div> 

Как указано в комментариях, я хочу сделать простой расчет с помощью двух переменных цикла, а затем сделать что-то с reslt (например, вставить его в шаблон).

Если возможно, я хочу повторно использовать результат вычисления, а не вычислять его несколько раз (потому что вычисление может быть немного сложнее, чем в примере, а также я не хочу копировать код для вычисление, если я могу просто использовать переменную).

Я знаю, что не нужно делать слишком много вычислений в шаблоне, но это всего лишь пример. Моя цель - повторное использование материала. Также я знаю, что для определения макросов есть тег def, но я думаю, что они просто создают текст, а не переменную, поэтому я не могу использовать его, например, в теге if для проверки условий.

Есть ли способ иметь тег Python в шаблоне Genshi только для простых выражений Python без необходимости выводить что-нибудь?

ответ

1

Начиная с конца: Есть ли способ иметь тег Python в шаблоне Genshi только для простых выражений Python без необходимости выводить что-нибудь?

Да, вы можете использовать следующий тег:

<?python ... ?> 

Например:

<?python 
      if 'condition': 
       var = 'controls' 
      else: 
       var = 'controls row-fluid' 
      ?> 

, а затем:

<-- now class='controls' if 'condition' is true else class='controls row-fluid' --> 
<div class="$var"> 
     <-- put something inside --> 
</div> 

Я надеюсь, что это помогает, если что-то неясно, или «странно», прокомментируйте.

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