【问题标题】:django 1.10 cycle to add hr tag every 4th elementdjango 1.10循环每4个元素添加hr标签
【发布时间】:2017-02-12 17:08:13
【问题描述】:

我想在我的 html 文档中每隔 4 个子元素添加一个 hr 元素。这是我目前所拥有的:

<div class="row blog-post">
    {% for obj in object_list %}
        <div class="col-sm-3">
            <div class="thumbnail">
                {% if obj.image %}
                    <img src="{{ obj.image.url }}" class="img-responsive"/>
                {% endif %}
                <div class="caption post-detail-item">
                    {% if obj.draft %}<h3>Staff only: <span style="color:red;">Draft</span></h3> {% endif %} {% if obj.publish > today %}<h3>Staff only: <span style="color:red;">Future Post</span></h3>{% endif %}
                    <h3><a href='{{ obj.get_absolute_url }}'>{{ obj.title }}</a><small> {{ obj.publish|timesince }}</small></h3>
                    {% if obj.user.get_full_name %}
                        <p>Author: {{ obj.user.get_full_name }}</p>
                    {% endif %}
                    {{ obj.get_markdown|truncatechars_html:350 }}
                    <p><a href="{{ obj.get_absolute_url }}" class="btn btn-primary" type="button">View</a></p>
                </div>
            </div>
        </div>
    {% cycle "" "<div class='col-sm-12'><hr/></div></div><div></div><div class='row'>" %}
    {% endfor %}
</div>

我在那里的循环位可以分隔每个第二个元素,但我希望它是每 4 个。没有它,我每行有 4 个元素。这就是我要的。基本上,我试图为每列设置一个标准高度。

【问题讨论】:

    标签: html django django-templates jinja2


    【解决方案1】:
    {% if forloop.counter0|divisibleby:4 %}
        <div class='col-sm-12'><hr/></div></div><div></div><div class='row'>
    {% endif %}
    

    更多关于divisibleby的信息:https://docs.djangoproject.com/en/1.10/ref/templates/builtins/#divisibleby

    【讨论】:

      【解决方案2】:

      您可以将两个以上的参数传递给循环标签。例如:

      {% cycle "" "" "" "<div..." %}
      

      按照 1GDST 的建议,使用 divisibleby 可能更整洁,我只是添加这个答案作为替代。

      【讨论】: