Как отслеживать состояние при итерации в шаблонах Mako Python
Вопрос
Я хочу закрутить список по списку и распечатать элементы, отделенные «,», без комиссионного запятой. Я не могу просто ', '.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
Не связан с StackOverflow