【发布时间】:2011-06-10 18:50:33
【问题描述】:
假设我有一个 for 循环,其中列出了一堆用户。循环中可能有 0-n 个用户。我想在除最后一个用户名之外的每个用户名后加上逗号。
所以对于:
<p>
{% for u in users %}
{{u.name}},
{% endfor }
</p>
我明白了:
Sam, Neil, Bob,
我想要:
Sam, Neil, Bob
【问题讨论】:
假设我有一个 for 循环,其中列出了一堆用户。循环中可能有 0-n 个用户。我想在除最后一个用户名之外的每个用户名后加上逗号。
所以对于:
<p>
{% for u in users %}
{{u.name}},
{% endfor }
</p>
我明白了:
Sam, Neil, Bob,
我想要:
Sam, Neil, Bob
【问题讨论】:
我同意加入是一个好方法。如果你想用 for 来做,试试
{% for u in users %}
{{u.name}}{% if not forloop.last %},{% endif %}
{% endfor }
【讨论】:
{{ u.name }}{% if not forloop.last %},{% else %}.{% endif %} 如果你想要一个“.”最后。
Django 1.2 中的 for 循环包括一些自动生成的变量。其中包括:
forloop.first
forloop.last
因此您可以使用 if 语句放置分隔符:
<p>
{% for u in users %}
{{u.name}}
{% if not forloop.last %}
,
{% endif %}
{% endfor %}
</p>
【讨论】:
如果您不需要循环,而您只有一个列表,那么“加入”可能是您最好的解决方案。
但首先我们需要获取所有名称的列表,map 应该可以帮助我们,然后加入所有结果:
{% with names = map(lambda u: u.name, users) %}
{{ names|join:", " }}
{% endwith %}
【讨论】: