Получение следующего элемента в цикле - PullRequest
1 голос
/ 05 ноября 2011

То, что я хочу сделать, довольно просто: у меня есть модель, на которой я запускаю цикл перегруппировки. Теперь я хочу показать первые 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 %}

Ответы [ 2 ]

1 голос
/ 05 ноября 2011
<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>
0 голосов
/ 07 ноября 2011

Я бы предложил сгруппировать ваши строки в коде Python перед передачей его в шаблон.Вы можете сделать это с помощью итераторов, таких как:

my_iter = iter(my_list)
grouped = zip(my_iter, my_iter, my_iter, my_iter) # or zip(*[my_iter]*4)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...