繁体   English   中英

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

[英]How to track state when iterating in Python's Mako Templates

我想遍历一个列表并打印由','分隔的元素,没有逗号。 我不能只是', '.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最后一回合是1。

扩展@ AlexMartelli的答案,我喜欢将enumerate事物与一个很好的技巧结合起来,以保持指令的小:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM