@lehubozedo

Как правильно разбить список на 2 части в шаблонах django?

Есть список, например:
['Калина', 'Брусника', 'Ежевика', 'Смородина', 'Черника',]
нужно разбить на две части шаблонизатором, порядок НЕ важен (местами пусть меняются, пофик):
<div class="sub-menu">
	<ul>
		<li><a href="#"><span>Калина</span></a></li>
		<li><a href="#"><span>Брусника</span></a></li>
		<li><a href="#"><span>Черника</span></a></li>
	</ul>
  <ul>
		<li><a href="#"><span>Смородина</span></a></li>
		<li><a href="#"><span>Ежевика</span></a></li>
	</ul>
	<div class="clear"></div>


как это сделать с помощью cycle - https://docs.djangoproject.com/en/1.11/ref/templat... ??
  • Вопрос задан
  • 451 просмотр
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Django
Седой и строгий
Это никак не сделать встроенными средствами шаблонизатора и особенно с помощью cycle. Но легко написать для этих целей простой фильтр:

templatetags/chunkify.py
from django import template

register = template.Library()

@register.filter(is_safe=True)
def chunk_list(value, chunk_size=3):
    for i in range(0, len(value), chunk_size):
        yield value[i:i+chunk_size]

templates/chunks.html
{% load chunkify %}

{% with item_list|chunk_list:3 as chunks %}
    {% for chunk in chunks %}
    <ul>
        {% for item in chunk %}
        <li>{{ item }}</li>
        {% endfor %}
    </ul>
    {% endfor %}
{% endwith %}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы