Как разделить все объекты на части

#django #django-templates

#django #django-шаблоны

Вопрос:

У меня есть раздел for в моем шаблоне:

 {% for image in gallery.images.all %}
    <div id="image{{ image.id }}" class="frame">
        <img src="{{ image.url_125x125 }}" alt="{{ image.name }}" />
    </div>
{% endfor %}
  

Я хочу разделить этот раздел forloop на части, каждая из которых содержит 5 элементов, например, вот так:

 {% for image in gallery.images.all|slice:"5:" %}
    <div id="image{{ image.id }}" class="frame">
        <img src="{{ image.url_125x125 }}" alt="{{ image.name }}" />
    </div>
{% endfor %}
{% for image in gallery.images.all|slice:"5:5" %}
    <div id="image{{ image.id }}" class="frame">
        <img src="{{ image.url_125x125 }}" alt="{{ image.name }}" />
    </div>
{% endfor %}
{% for image in gallery.images.all|slice:"10:5" %}
    <div id="image{{ image.id }}" class="frame">
        <img src="{{ image.url_125x125 }}" alt="{{ image.name }}" />
    </div>
{% endfor %}

etc...
  

Но сейчас я не знаю, сколько изображений в галерее. Как сделать это автоматически? Я знаю, что это что-то вроде forloop.counter, но я не знаю как 🙂 forloop.counter по модулю 5?

Комментарии:

1. Какова цель такого разделения? Разбивка на страницы? Затем вы можете попробовать Paginator из django. Вы не можете выполнять арифметические операции по модулю в шаблонах django.

2. нет, я хочу показывать только 5 изображений одновременно и использовать jquery для отображения следующего

3. Возможно, вам стоит подумать о написании пользовательского тега.

Ответ №1:

не могли бы вы просто разделить его на части в вашем представлении? заполнять список списками из 5 элементов, пока не закончится? Затем в вашем шаблоне вы просто перебираете каждый из этих 5 фрагментов раздела???

Комментарии:

1. Да, я думаю об этом, но я хотел этого избежать.