Как добавить запятые / разделители для всех элементов списка, кроме последнего? - PullRequest
3 голосов
/ 18 января 2011

Скажем, у меня есть цикл for, который перечисляет группу пользователей.Там может быть 0-н пользователей в цикле.Я хочу ставить запятые после каждого имени пользователя, кроме последнего.

Так что для:

<p>
{% for u in users %}
{{u.name}},
{% endfor }
</p>

Я получаю:

Sam, Neil, Bob,

Я хочу:

Sam, Neil, Bob

Ответы [ 3 ]

7 голосов
/ 18 января 2011

Я согласен, что присоединение - это хороший подход. Если вы хотите сделать это с for, попробуйте

{% for u in users %}
{{u.name}}{% if not forloop.last %},{% endif %}
{% endfor }
2 голосов
/ 18 января 2011

Цикл for в Django 1.2 включает несколько автоматически сгенерированных переменных.Среди них:

forloop.first
forloop.last

Таким образом, вы можете разместить разделитель с помощью оператора if:

<p>
{% for u in users %}
{{u.name}}
{% if not forloop.last %}
,
{% endif %}
{% endfor %}
</p>
0 голосов
/ 18 января 2011

Если вам не нужен цикл, и у вас просто есть список, тогда «соединение», вероятно, является вашим лучшим решением.

Но сначала нам нужно получить список всех имен, карта должна помочьнам с этим, а затем объединить все результаты:

{% with names = map(lambda u: u.name, users) %}
{{ names|join:", " }}
{% endwith %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...