【问题标题】:Refactor Django template forloop重构 Django 模板 forloop
【发布时间】:2009-10-29 06:03:23
【问题描述】:

我觉得必须有一种更清洁的方式来做这样的事情。我有 15 个左右的对象,这些对象连续列出了三个。任何人都知道更好的解决方案。

<ul>
    {% for object in object_list %}

        <li
            {% ifequal forloop.counter 1  %}class="first"{% endifequal %}
            {% ifequal forloop.counter 4  %}class="first"{% endifequal %}
            {% ifequal forloop.counter 7  %}class="first"{% endifequal %}
            {% ifequal forloop.counter 10  %}class="first"{% endifequal %}
            {% ifequal forloop.counter 13  %}class="first"{% endifequal %}   
        >
            {{ object.title }}
        </li>

        {% ifequal forloop.counter 3 %}<div class="clear"></div>{% endifequal %}
        {% ifequal forloop.counter 6 %}<div class="clear"></div>{% endifequal %}
        {% ifequal forloop.counter 9 %}<div class="clear"></div>{% endifequal %}
        {% ifequal forloop.counter 12 %}<div class="clear"></div>{% endifequal %}
        {% ifequal forloop.counter 15 %}<div class="clear"></div>{% endifequal %}
    {% endfor %}
</ul>

对于第二个循环你可以做

{% if forloop.counter|divisibleby:"3" %}<div class="clear"></div>{% endif %}

但是 1,4,7,10,13 没有共同点。

感谢任何帮助。

【问题讨论】:

    标签: refactoring django-templates for-loop


    【解决方案1】:

    您正在寻找 forloop.counter0。

    {% if forloop.counter0|divisibleby:"3" %}<div class="clear"></div>{% endif %}
    

    【讨论】:

      【解决方案2】:

      您可以使用切片将它们分成 3 行的组,然后对每个 3 单元切片执行适当的操作。

      http://docs.djangoproject.com/en/dev/ref/templates/builtins/#slice

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-07
        • 2016-06-26
        • 2013-09-02
        • 2012-02-23
        • 1970-01-01
        • 2017-02-22
        • 1970-01-01
        • 2021-05-23
        相关资源
        最近更新 更多