2009-12-22 44 views
15

我有一个产品列表,将3个产品放在一行,并清除行,并添加另一个3,这工作很好,除了IE6,我知道每个组3个产品添加<div>将解决这个问题是目前蟒蛇每第3次迭代添加一个新的div

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

回答

37

codeape的解决方案只适用于最近使用SVN的Django中继结帐。如果您使用1.1版或更低版本,则不支持该语法。

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

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

使用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

编辑:

修正了代码示例。

+0

我试着这样做,我得到一个模板错误“如果”语句格式不正确 – Udders 2009-12-22 10:25:55

+0

对不起,我忘了Django的模板,如果声明不接受任何python表达式。 – codeape 2009-12-22 11:14:59