То, что я хочу сделать, довольно просто: у меня есть модель, на которой я запускаю цикл перегруппировки. Теперь я хочу показать первые 4 элемента цикла рядом друг с другом, а затем продолжить на следующей строке со следующими 4 пунктами, пока список не будет выполнен. Если предметов больше нет, другие ячейки на линии могут оставаться пустыми.
Я попытался понять, как я могу использовать итерации здесь, но не смог понять, как он подходит к тому, что у меня есть. Кроме того, у меня есть идея, что это должно быть возможно сделать это проще... Ниже я скопировал код, который у меня есть сейчас, который, очевидно, показывает первый элемент цикла 4 раза, затем в 4 раза второй, и т.п.
Я знаю, что на этом сайте есть похожие вопросы, но я не смог использовать их для разработки решения для моего вопроса. Я запускаю Python в Google App Engine. Любая помощь очень ценится!
{% regroup communities|dictsort:"in_country" by in_country as community_list %}
{% for in_country in community_list %}
<h2 style="font-size:16px;">{{ in_country.grouper }}</h2>
<table cellspacing="0">
{% for item in in_country.list|dictsort:"name" %}
<tr style="text-align:center;">
<td width="200px" class='community_table'>
<img src="{{ item.image }}" style="height:40px;"><br />
<a href='{{ item.url }}' style="font-size:10px; margin-left:10px;" TARGET = "_blank">{{ item.name }}</a><br />
{{ item.com_type }}<br />
{{ item.in_city }}<br />
</td>
<td width="200px" class='community_table'>
<img src="{{ item.image }}" style="height:40px;"><br />
<a href='{{ item.url }}' style="font-size:10px; margin-left:10px;" TARGET = "_blank">{{ item.name }}</a><br />
{{ item.com_type }}<br />
{{ item.in_city }}<br />
</td>
<td width="200px" class='community_table'>
<img src="{{ item.image }}" style="height:40px;"><br />
<a href='{{ item.url }}' style="font-size:10px; margin-left:10px;" TARGET = "_blank">{{ item.name }}</a><br />
{{ item.com_type }}<br />
{{ item.in_city }}<br />
</td>
<td width="200px" class='community_table'>
<img src="{{ item.image }}" style="height:40px;"><br />
<a href='{{ item.url }}' style="font-size:10px; margin-left:10px;" TARGET = "_blank">{{ item.name }}</a><br />
{{ item.com_type }}<br />
{{ item.in_city }}<br />
</td>
{% endfor %}
</table>
{% endfor %}
<table cellspacing="0">
{% for item in in_country.list|dictsort:"name" %}
{% if forloop.counter0|divisibleby:4 %}
<tr style="text-align:center;">
{% endif %}
<td width="200px" class='community_table'>
<img src="{{ item.image }}" style="height:40px;"><br />
<a href='{{ item.url }}' style="font-size:10px; margin-left:10px;" TARGET = "_blank">{{ item.name }}</a><br />
{{ item.com_type }}<br />
{{ item.in_city }}<br />
</td>
{% if forloop.counter|divisibleby:4 %}
</tr>
{% endif %}
{% endfor %}
</table>
divisibleby
. И нет, вы хотите, чтобы первый тег отображался только в строках 0, 4, 8 и т. Д., А последний - в строках 3, 7, 11 и т. Д.
Я бы предложил группировать ваши строки в коде Python, прежде чем передавать его в шаблон. Вы можете сделать это, используя итераторы:
my_iter = iter(my_list)
grouped = zip(my_iter, my_iter, my_iter, my_iter) # or zip(*[my_iter]*4)