2013-10-17 34 views
2

我有一個django模板,我需要在兩個不同的for循環中遍歷一組背景顏色。循環標籤似乎被設計爲在一個for循環內或一個for循環外使用。這是我的代碼:如何在django模板中循環2個forloops

{% if global_adverts %} 
     <span style="display:none">{% cycle 'advert-grey' 'advert-pale-blue' 'advert-green' 'advert-blue' as adcolors %}</span> 
     {% for advert in global_adverts %} 
      <div class="{% cycle adcolors %}"> 
       {% if advert.url %}<a href="{{ advert.url }}">{% endif %} 
        <p>{{ advert.text }}</p> 
       {% if advert.url %}</a>{% endif %} 
      </div> 
     {% endfor %} 
    {% endif %} 
    {% with self.adverts.all as adverts %} 
     {% if adverts %} 
      {% for advert in adverts %} 
       <div class="{% cycle adcolors %}"> 
        {% if advert.url %}<a href="{{ advert.url }}">{% endif %} 
         <p>{{ advert.text }}</p> 
        {% if advert.url %}</a>{% endif %} 
       </div> 
      {% endfor %} 
     {% endif %} 
    {% endwith %} 

有沒有辦法做到這一點,而不在循環輸出第一項第一循環之前,並且具有與CSS來隱藏它?

回答

1

我發現下面的代碼給出了期望的結果:

{% if global_adverts %} 
     {% for advert in global_adverts %} 
      <div class="{% cycle 'advert-grey' 'advert-pale-blue' 'advert-green' 'advert-blue' as adcolours %}"> 
       {% if advert.url %}<a href="{{ advert.url }}">{% endif %} 
        <p>{{ advert.text }}</p> 
       {% if advert.url %}</a>{% endif %} 
      </div> 
     {% endfor %} 
    {% endif %} 
    {% with self.adverts.all as adverts %} 
     {% if adverts %} 
      {% for advert in adverts %} 
       <div class="{% cycle adcolours %}"> 
        {% if advert.url %}<a href="{{ advert.url }}">{% endif %} 
         <p>{{ advert.text }}</p> 
        {% if advert.url %}</a>{% endif %} 
       </div> 
      {% endfor %} 
     {% endif %} 
    {% endwith %} 
1

只需添加沉默

{% cycle 'advert-grey' 'advert-pale-blue' 'advert-green' 'advert-blue' as adcolors silent %} 

它可以防止標籤從輸出值

編輯時,COMMENT

如果需要的週期繼續爲每個循環只需使用週期兩次,並在第二個週期中更改物品的順序:

{% if global_adverts %} 
     {% for advert in global_adverts %} 
      <div class="{% cycle 'advert-grey' 'advert-pale-blue' 'advert-green' 'advert-blue' %}"> 
       {% if advert.url %}<a href="{{ advert.url }}">{% endif %} 
        <p>{{ advert.text }}</p> 
       {% if advert.url %}</a>{% endif %} 
      </div> 
     {% endfor %} 
    {% endif %} 
    {% with self.adverts.all as adverts %} 
     {% if adverts %} 
      {% for advert in adverts %} 
       <div class="{% cycle 'advert-pale-blue' 'advert-green' 'advert-blue' 'advert-grey' %}"> 
        {% if advert.url %}<a href="{{ advert.url }}">{% endif %} 
         <p>{{ advert.text }}</p> 
        {% if advert.url %}</a>{% endif %} 
       </div> 
      {% endfor %} 
     {% endif %} 
    {% endwith %} 
+0

這似乎抑制在每一點上我把它輸出,不只是第一次。 – Brighty

+0

是的,現在我看到你對循環做的確切用法,這有點奇怪,我會檢查一個解決方案 – YardenST

+0

@Brighty,所以你只是希望循環項在每次循環迭代中都是相同的? – YardenST