目前,对于文章中的每篇文章,都会创建一个类为span4的新div.相反,对于每一行,我想将其内容限制为三个跨度,并在达到该限制后创建一个新行.我怎样才能最好地实现这一点?
{% extends "base.html" %}
{% block content %}
<div class="container-fluid">
<legend></legend>
<div class="row-fluid" id="main">
{% for article in articles %}
<div class="span4">
<div class="thumbnail">
<a href="{{ article.url }}"><img src="http://placehold.it/300x150/483CB4"></a>
<div class="caption">
<h4><a href="{{ article.url }}">{{ article.title }}</a></h4>
<p> {{ article.summary }}</p>
</div>
<legend></legend>
<a class="btn" href="#"><i class="icon-thumbs-up"></i></a>
<a class="btn" href="#"><i class="icon-thumbs-down"></i></a>
</div>
</div>
{% endfor %}
</div>
</div>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
目标:
<div class="row">
<div class="span4">article[0]</div>
<div class="span4">article[1]</div>
<div class="span4">article[2]</div>
</div>
<div class="row">
<div class="span4">article[3]</div>
<div class="span4">article[4]</div>
<div class="span4">article[5]</div>
</div>
Run Code Online (Sandbox Code Playgroud)
Sea*_*ira 35
执行此操作的最佳方法是使用内置batch过滤器将列表分成三个组:
{% for article_row in articles | batch(3, ' ') %}
<div class="row">
{% for article in article_row %}
<div class="span4">{{ article }}</div>
{% endfor %}
</div>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
你可以在循环中使用loop.index0和.这是for循环文档.loop.lastfor
例:
{% extends "base.html" %}
{% block content %}
<div class="container-fluid">
<legend></legend>
<div class="row-fluid" id="main">
{% for article in articles %}
{% if loop.index0 % 3 == 0 %}
<div class="row">
{% endif %}
<div class="span4">
...
</div>
{% if loop.index0 % 3 == 2 or loop.last %}
</div>
{% endif %}
{% endfor %}
</div>
</div>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
loop.last即使少于3个项目,该子句也应该关闭最后一行.<div>当loop.index00为余数时应该开始,并且当2为余数时应该结束
另一种方法是在将项目传递到模板之前将项目分组为行,然后您可以在另一个内部发出两个for循环.
| 归档时间: |
|
| 查看次数: |
7379 次 |
| 最近记录: |