Django循环模板将不允许新行如果我做我的html看起来乱码如何解决这个问题?

时间:2016-05-06 22:57:48

标签: html css django

我正在尝试掌握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%}

循环模板很长。我希望有更复杂的方法来做到这一点。使用循环标记或更简单的方法有什么更好的方法?我愿意接受任何建议。谢谢大家。

1 个答案:

答案 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 %}

同样,您可以在循环中的其他特定计数器点添加其他内容。