2009-12-22 5 views
15

Ich habe eine Produktliste, die 3 Produkte in einer Reihe und löscht die Zeile und fügt eine weitere 3, das funktioniert überall aber IE6, ich weiß, dass <div> um jede Gruppe von 3 Produkte hinzufügen löst dies zur Zeit die Template-Datei istPython fügen Sie eine neue div jede 3. Iteration

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

Antwort

37

Die Lösung von Codeape funktioniert nur, wenn Sie einen sehr aktuellen SVN-Checkout von Django Trunk verwenden. Wenn Sie Version 1.1 oder niedriger verwenden, wird diese Syntax nicht unterstützt.

Stattdessen können Sie die divisibleby Filter verwenden:

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

Verwendung forloop.counter und ein Modulo-Operator in der Schleife:

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

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

EDIT:

Das Codebeispiel wurde behoben.

+0

ich dies tun, habe ich versucht, eine Vorlage Fehler erhalten ‚wenn‘ Anweisung falsch – Udders

+0

Leider formatiert, ich habe vergessen, dass die Django-Templating if-Anweisung übernimmt keine Python-Ausdruck. – codeape

Verwandte Themen