Python добавляет новый div каждые 3-й итерации

У меня есть список продуктов, которые помещают 3 продукта в строку и очищают строку и добавляют еще 3, это отлично работает везде, но IE6, я знаю, что добавление <div> вокруг каждой группы из 3 продуктов разрешит это шаблон файл в настоящий момент

{% for product in category.products.all %}
        <div class="{% cycle 'clear' '' '' %}">
            <a href="{% url shop.views.product category.slug product.slug %}"><img src="{{MEDIA_URL}}{{product.mini_thumbnail}}" alt="{{product.name}}" class="thumbnail"/></a>
            <div class="prod-details">
            <h3><a href="{% url shop.views.product category.slug product.slug %}">{{product.get_product_name}}</a></h3>
            <h4 class="strap">{{product.get_product_detail}}</h4>
            <p>{{ product.strap }}</p>
            <ul>
                <li class="price">&pound;{{product.price}}</li>
                <li class="quantity">
                    <select name="quantity_{{product.id}}">
                        <option label="1" value="1">1</option>
                        <option label="2" value="2">2</option>
                        <option label="3" value="3">3</option>
                        <option label="4" value="4">4</option>
                        <option label="5" value="5">5</option>
                        <option label="6" value="6">6</option>
                        <option label="7" value="7">7</option>
                        <option label="8" value="8">8</option>
                        <option label="9" value="9">9</option>
                    </select>
                </li>
                <li><a href="{% url shop.views.product category.slug product.slug %}">Details &gt;</a></li>
                <li class="right"><input type="submit" name="add_to_basket_{{product.id}}" value="Add to Basket &gt;"/></li>
            </ul>
            </div>
        </div>
    {% endfor %}

Ответы

Ответ 1

Решение

codeape работает только в том случае, если вы используете очень недавнюю проверку SVN для соединительной линии Django. Если вы используете версию 1.1 или ниже, этот синтаксис не поддерживается.

Вместо этого вы можете использовать фильтр divisibleby:

{% if forloop.counter|divisibleby:3 %}<div>{% endif %}

Ответ 2

Используйте forloop.counter и оператор modulo внутри цикла:

{% for ... %}
{% if forloop.counter|divisibleby:3 %}<div>{% endif %}
...
{% if forloop.counter|divisibleby:3 %}</div>{% endif %}
{% endfor %}

См. http://docs.djangoproject.com/en/dev/ref/templates/builtins/#for

EDIT:

Исправлен пример кода.