【问题标题】:Django template row alternate for multiple contentDjango模板行替代多个内容
【发布时间】:2016-12-20 08:52:29
【问题描述】:

我有一个这样的模板设计

<div class="row">
      <div class="col-sm-8"></div>
      <div class="col-sm-4"></div>
</div>
<div class="row">
      <div class="col-sm-4"></div>
      <div class="col-sm-8"></div>
</div>

我已经尝试使用这篇文章django template rows of multiple items

但是输出没有按要求来。我该怎么做才能按要求做。

我尝试过的:

{% for item in items %}
<div class="row">
   {% if forloop.counter|divisibleby:2 %}
       <div class="col-sm-4"></div>
       {% else %}
        <div class="col-sm-8"></div>
   {% endif %}
</div>
{% endfor %}

【问题讨论】:

  • 你好,你能分享你完整的代码吗?正如您在另一篇文章中看到的,这是您需要创建的循环。
  • 这是你的问题。开始的“div 标签”在循环内。让我给你看。

标签: django


【解决方案1】:

您的代码每项生成一行。如果我是正确的,您需要每行 2 个项目。

{% with items_length = items|length%}
<div class="row">
{% for item in items %}
<div class="col-sm-{% cycle '4' '8'%}"></div>
{% if forloop.counter|divisibleby:2 and forloop.counter < items_length %}
</div>
<div class="row">
{% endif %}
{% endfor %}
</div>
{% endwith %}

类似的东西应该可以工作。

【讨论】:

    【解决方案2】:

    以下是一种方法:

    {% for item in items %}
    <div class="row">
        {% if forloop.counter0|divisibleby:2 %}
            <div class="col-sm-8"></div>
            <div class="col-sm-4"></div>
        {% else %}
            <div class="col-sm-8"></div>
            <div class="col-sm-4"></div>
        {% endif %}
    </div>
    {% endfor %}
    

    注意forloop.counter0的使用。

    【讨论】:

    • 显示单个数据两次
    • 不,不应该,除非您在显示的循环中运行另一个 for 循环
    • @nikolas 向我们展示您放入模板的确切代码。那里出了点问题。
    猜你喜欢
    • 2018-07-31
    • 1970-01-01
    • 2014-09-06
    • 2011-06-20
    • 1970-01-01
    • 1970-01-01
    • 2018-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多