Django创建了多列灵活的最佳实践

时间:2014-07-24 11:25:43

标签: django django-templates

我想创建一个包含许多列的图片查看器。我不确切地知道这个号码。

我想尊重最佳做法。

我已完成以下代码:

{% with max=4 taille=3 %}
    {% for image in image_list %}
        {% if nb == 1 %}
            <div class="row">
        {% endif %}
            <div class="col-sm-{{ taille }}">
                <a href="{{ image.url }}">{{ image.name }}</a>
            </div>
        {% if nb == 2 %}
            </div>
        {% endif %}
        {% nb += 1 %}
        {% if nb > 4 %}
            {% nb = 1 %}
        {% endif %}
    {% endfor %}
{% endwith %}

但模板系统不允许我这样做:

{% nb += 1 %}

你有什么想法吗?谢谢。

2 个答案:

答案 0 :(得分:1)

这是一个关于如何执行此操作的快速示例(这是基于2列的itteration),但您可以根据自己的喜好进行更改(例如,替换&#34; 2&#34;使用整数):

<div class="row">
{% for image in image_list %}
    <div class="col-sm-6">
        <a href="{{ image.url }}">{{ image.name }}</a>
    </div>
    {% if not forloop.last and forloop.counter|divisibleby:"2" %}
</div>
<div class="row">
{% endfor %}
</div>

答案 1 :(得分:0)

在Django模板中,您不能使用+ = 1运算符 你可以使用forloop.counter

    {% if forloop.counter0|divisibleby:4 %}   so every 4 iterations 
                                            starting with first iteration where 
                                            counter is 0
        <div class="row">
    {% endif %}
        <div class="col-sm-{{ taille }}">
            <a href="{{ image.url }}">{{ image.name }}</a>
        </div>
    {% if forloop.counter0|add:"-1"|divisibleby:"4" %}  also every 4 iterations 
                                                       but starting with the 2nd
                                                       iteration where counter is 1
        </div>
    {% endif %}