代码之家  ›  专栏  ›  技术社区  ›  Udders

python每隔3次迭代添加一个新的div

  •  16
  • Udders  · 技术社区  · 16 年前

    我有一个产品列表,它将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 %}
    
    2 回复  |  直到 16 年前
        1
  •  37
  •   Daniel Roseman    16 年前

    codeape的解决方案只有在您使用最近Django主干的SVN签出时才有效。如果您使用的是1.1或更低版本,则不支持该语法。

    相反,您可以使用 divisibleby 过滤器:

    {% if forloop.counter|divisibleby:3 %}<div>{% endif %}
    
        2
  •  8
  •   codeape    16 年前

    使用 forloop.counter 以及循环内的模运算符:

    {% 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

    编辑:

    修复了代码示例。