Шаблон Django, повторяющийся по списку - PullRequest
1 голос
/ 12 апреля 2011

У меня есть список, созданный в представлении Django:

list = [ elem1, elem2, ..., elemN ]

Список имеет переменную длину: он может содержать 0-6 элементов. Я хочу перебрать список в шаблоне, но я бы хотел, чтобы цикл выполнялся всегда 6 раз, давая None или пустую строку для несуществующих элементов.

Я пробовал что-то вроде этого:

{% for i in "0123456" %}
    {{ list.i }}
{% endfor %}

но это, очевидно, не работает. Я знаю, что мог бы сделать это в представлении, но я хотел бы иметь это в шаблоне. Возможно ли это?

Ответы [ 2 ]

2 голосов
/ 12 апреля 2011

Вы можете добавить оператор if, проверяющий, шестой ли это цикл.

{% for item in someList %}
{% if forloop.counter <= 6 %}
{{ item }}
{% endif %}
{% endfor %}

http://docs.djangoproject.com/en/1.3/ref/templates/builtins/#for в документации.Конечно, если ваш список очень длинный, то это не оптимально.Я бы также предложил обработать список в views.py и затем передать его шаблону.Логика должна оставаться в представлениях, если это возможно.

Это дает вам контроль над количеством выполненных циклов.Чтобы полностью решить вашу проблему, вам понадобится дополнительная логика, но об этом см. Мое примечание выше.

0 голосов
/ 12 апреля 2011

Проверьте этот фрагмент: Фильтр диапазона шаблонов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...