获取循环中的下一个项目

时间:2011-11-05 18:20:28

标签: python google-app-engine loops django-templates

我想要做的很简单:我有一个模型,我正在运行一个重组循环。现在我想显示循环的前4个项目,然后继续下一行与接下来的4个项目,直到列表完成。如果没有其他项目,该行上的其他单元格可以保持为空。

我试图了解如何在这里使用迭代,但是无法弄清楚它是如何适合我的。另外,我认为应该可以用更简单的方式做到这一点......下面我复制了我现在拥有的代码,这显然显示了循环的第一项4次,然后是第二项的4次,等。

我知道这个网站上有一些类似的问题,但我无法利用它们为我的问题开发解决方案。我在Google App Engine上运行Python。非常感谢任何帮助!

{% 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 个答案:

答案 0 :(得分:1)

<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>

答案 1 :(得分:0)

我建议在将代码传递给模板之前,在Python代码中对行进行分组。你可以使用这样的迭代器来做到这一点:

my_iter = iter(my_list)
grouped = zip(my_iter, my_iter, my_iter, my_iter) # or zip(*[my_iter]*4)