如何在Python Mako模板中迭代时跟踪状态

时间:2010-01-30 19:11:46

标签: python templates mako

我想遍历一个列表并打印由','分隔的元素,没有逗号。由于形成和逃避,我不能只', '.join(headings)。但是下面的内容显然让我留下了一个逗号。

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

或者更一般地说:当在Mako模板中迭代某些东西时,有没有办法知道我是否到达了最后一个元素(或者第一个,或者是nt)?

3 个答案:

答案 0 :(得分:4)

我这样做:

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

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

答案 1 :(得分:4)

要通过循环跟踪第一段或最后一段,在Mako中就像在普通Python中一样,使用:

% for i, x in enumerate(headings): 

所以i在第一条腿上为0,在最后一条腿上为len(headings) - 1

答案 2 :(得分:2)

延伸@ AlexMartelli的回答,我喜欢将enumerate事情与一个很好的技巧结合起来,以保持指令的小:

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