2009-12-22 17 views
15

Mam listę produktów, które umieszczają 3 produkty z rzędu i czyści wiersz i dodaje kolejne 3, działa dobrze wszędzie, ale IE6, wiem, że dodając <div> wokół każdej grupy 3 produktów rozwiąże to jest plik szablonu w momenciepython dodaj nowy div co trzecia iteracja

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

Odpowiedz

37

Rozwiązanie codeape działa tylko wtedy, gdy używasz bardzo niedawnego sprawdzenia SVN pnia Django. Jeśli używasz wersji 1.1 lub niższej, ta składnia nie jest obsługiwana.

Zamiast tego można użyć divisibleby filtr:

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

Korzystanie forloop.counter i operator modulo wewnątrz pętli:

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

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

EDYTOWANIE:

Naprawiono przykład kodu.

+0

Próbowałem robić to pojawia się błąd szablonu „if” oświadczenie nieprawidłowo sformatowana – Udders

+0

Przepraszam, zapomniałem, że Django szablonów if nie akceptuje dowolny wyrażenie Pythona. – codeape