我正在尝试掌握Django循环模板标记的用法。我在html中的布局是从右到左的3个帖子和从上到下的5个帖子。我使用了循环标签,所以在第六个帖子之后,水平条会在我的行的整个宽度之下。我想把广告放在那里。所以它看起来像这样
123
456
---
123
456
789
在玩了一段时间之后,我有点想通了。我现在面临的困境是我想把我的广告的代码放在哪里。但代码很长,如果我去一个新的行,即使我使用它\它仍然扰乱我的HTML。我现在的方式就像这样
{% block content %}
<div class="row" id="scheme">
{% for post in posts %}
<div class="col-xs-12 col-md-4" id="split">
<div class="thumbnail thumb">
<h6 id="date">{{ post.publish|date }}</h6>
{% if post.image %}
<img src="{{post.image.url}}" class="img-responsive post">
{% elif post.image_url %}
<img src="{{post.image_url}}" class="img-responsive post">
{% else %}
<p>upload an image</p>
{% endif %}
<div style="border-bottom: thin solid lightslategray; padding-bottom: 15px;"></div>
<div class="caption" id="cap">
<a href="{{ post.get_absolute_url }}">
<h5 class="post-title" id="title">{{post.title}}</h5>
</a>
{% if user.is_authenticated %}
<p>
<a href="{% url 'blog:delete' post.id %}" class="btn" role="button">delete</a>
<a href="{% url 'blog:update' post.slug %}" class="btn" role="button">edit</a>
</p>
{% endif %}
</div>
</div>
</div>
{% cycle "" "" "" "" "" "<div id='adspace' class='col-xs-12 col-lg-12' style='height:200px; background-color: #5b80b2; margin-bottom: 60px'></div>" "" "" "" "" "" "" "" "" "<div class='col-sm-12'></div></div><div class='row'>" %}
{% endfor %}
</div>
{% include "pagination.html" with page=posts %}
{% endblock content%}
循环模板很长。我希望有更复杂的方法来做到这一点。使用循环标记或更简单的方法有什么更好的方法?我愿意接受任何建议。谢谢大家。
答案 0 :(得分:2)
要在循环中的第六项之后插入特殊内容,只需使用forloop计数器(docs):
{% for post in posts %}
... Post content here
{% if forloop.counter == 6 %}
<div id='adspace' class='col-xs-12 col-lg-12' style='height:200px;
background-color: #5b80b2; margin-bottom: 60px'></div>
{% endif %}
{% endfor %}
同样,您可以在循环中的其他特定计数器点添加其他内容。