Как отслеживать состояние при итерации в шаблонах Mako Python

StackOverflow https://stackoverflow.com/questions/2169065

  •  24-09-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

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

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

${', '.join( format(item) for item in l)}

Другие советы

Чтобы отследить первую или последнюю ногу через петлю, в Mako, как в обычной Python, используйте:

% for i, x in enumerate(headings): 

так i 0 на первой ноге и len(headings) - 1 на последней ноге.

Ответ на @ Alexmartelli, я люблю пару enumerate вещь с приятным трюком, чтобы держать инструкцию маленькой:

% for i, x in enumerate(xs):
  ${','*bool(i)} ${x}
% endfor
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top