我试图以特殊方式显示forloop的前两个对象。其余的应分为三个。
像这样:
<div class="row">
Object 1
Object 2 - Object slug
</div><!--/end first row with 2 objects-->
<div class="row">
Object 3
Object 4
Object 5
</div><!--/end row with 3 objects-->
<div class="row">
Object 6
Object 7
Object 8
</div><!--/end row with 3 objects-->
这是我的模板代码:
{% for object in object_list %}
{% if forloop.first %}
<div class="row">
{{object.name}}
{% elif forloop.counter == 2 %}
{{object.name}} - {{object.slug}}
</div><!--/end first row with 2 objects-->
{% else %}
{% cycle '<div class="row">' '' '' %}
{{object.name}} - {{object.slug}}
{% cycle '' '' '</div><!--/end row with 3 objects-->' %}
{% endif %}
{% endfor %}
此代码不起作用,因为循环标记计数第一个和第二个。我怎么能解决这个问题?
答案 0 :(得分:0)
在我看来,你不应该在模板中这样做。您应该在视图中创建这样的对象,然后进行迭代。
例如,现在你有object
这是一个数组:
object = ['object1', 'object2', 'object3', 'object4' , 'object5', 'object6', '...']
我的想法是让这个对象看起来像这样:
object = (['object1', 'object2'], ['object3', 'object4' , 'object5'], [...])
答案 1 :(得分:0)
这是我现在使用的代码。它似乎工作。在第一页上,两个第一篇文章组合在一起,其余的分组为三个。在其他页面上,所有文章都按三个分组。
{% for object in object_list %}
{% if forloop.first and page_number == 1 %}
<div class="row">
<div class="news-article">
{{ object.title }}
</div>
{% elif forloop.counter == 2 and page_number == 1 %}
<div class="news-article">
{{ object.title }}
</div>
</div><!-- /first row-->
{% else %}
{% cycle '<div class="row">' '' '' %}
<div class="news-article">
{{ object.title }}
</div>
{% endif %}
{% if page_number == 1 %}
{% if not forloop.counter == 1 and not forloop.counter == 2 %}
{% cycle '' '' '</div><!--/row-->' %}
{% endif %}
{% else %}
{% cycle '' '' '</div><!--/row-->' %}
{% endif %}
{% if not forloop.counter|divisibleby:"3" and forloop.last %}
</div><!--row.last-->
{% endif %}
{% endfor %}