Как отслеживать состояние при итерации в шаблонах Мако Python - PullRequest
3 голосов
/ 30 января 2010

Я хочу перебрать список и распечатать элементы, разделенные символом ',', без запятой. Я не могу просто ', '.join(headings) из-за формирования и побега. Но следующее, очевидно, оставляет меня с запятой.

% for x in headings:
  <a href='#${x|u}'>${x}</a>, \
% endfor

Или в более общем смысле: при переборе чего-либо в шаблоне Mako есть ли способ узнать, достиг ли я последнего элемента (или первого, или nt)?

Ответы [ 3 ]

4 голосов
/ 30 января 2010

Чтобы отслеживать первый или последний этап цикла, в Мако, как в обычном Python, используйте:

% for i, x in enumerate(headings): 

, поэтому i равно 0 на первом этапе и len(headings) - 1 на последнем этапе.

4 голосов
/ 30 января 2010

Я делаю такие вещи:

<%def name="format( item )"><a href="#${item|u}">${item|u}</a>
</%def>

${', '.join( format(item) for item in l)}
2 голосов
/ 07 сентября 2013

Продолжая ответ @ AlexMartelli, я хотел бы связать вещь enumerate с хорошим трюком, чтобы инструкция была небольшой:

% for i, x in enumerate(xs):
  ${','*bool(i)} ${x}
% endfor
...