django 1.10循环每4个元素添加hr标签

Posted

技术标签:

【中文标题】django 1.10循环每4个元素添加hr标签【英文标题】:django 1.10 cycle to add hr tag every 4th element 【发布时间】: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 个元素。这就是我要的。基本上,我试图为每列设置一个标准高度。

【问题讨论】:

【参考方案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 可能更整洁,我只是添加这个答案作为替代。

【讨论】:

以上是关于django 1.10循环每4个元素添加hr标签的主要内容,如果未能解决你的问题,请参考以下文章

课时18.h标签和p标签以及hr标签(掌握)

规范文档

H系列标签P标签Hr标签

Django 1.10 模板在其父级之外呈现嵌套的 HTML 标签

Django 1.10 模板语法错误。您是不是忘记注册或加载此标签?

如何在每两个兄弟 <hr> 标签之间抓取内容?