2011-05-29 15 views
13

मैं है मेरे टेम्पलेट में निम्न कोड:Django {% अगर forloop.first%} प्रश्न

{% for object in object_list %} 
{% with game=object.game %} 

{% for category in object.game.objectmeta.categories.all %} 
{% if category.name|title == 'Puzzle' %} 

{% if forloop.first %} 
    <div class='side_header' id='dark_gamelink_side'> 
     <a class='actionheader' href=""></a> 
    </div> 
{% endif %} 

<div class='game_link' id='dark_gamelink'> 
    <a class='img_link' href="{% url game_view game.id game.title|slugify %}"> 
     <img class='game_img' src='{{game|thumb:"78x65"}}' alt='{{game.title}}' /> 
    </a> 
    <div class='top_game_title' style='padding:0'> 
     <a style='position:relative; top:-3px' id='yellowlink' href="{% url game_view game.id game.title|slugify %}">{{game.title}} -- {{category.name|title}}</a> 
     <img style='position:relative; top:1px; margin-left:12px' src='thumbsup.gif' width='17' height='18'/> 
     <span style='position:relative; top:-3px; font-size:10px; color:white'>99%</span> 
    </div> 
    {% if game.description|length > 65 %} 
     {{ game.description|slice:"65" }}... 
    {% else %}  
     {{ game.description }} 
    {% endif %} 
</div> 

{% if forloop.counter0 == 3 %} 
    <div class='more_games'><br/></div><div class='side_header' id='dark_gamelink_side'><a class='adventureheader' href=adventure.htm></a></div> 
{% endif %} 


{% endif %} 
{%endfor%} 

{% endwith %} 
{% endfor %} 

अब मैं इस का उपयोग कर रहा:

{% if forloop.first %} 
    <div class='side_header' id='dark_gamelink_side'> 
     <a class='actionheader' href=""></a> 
    </div> 
{% endif %} 

अगर यह है पता लगाने के लिए प्रयास करने के लिए फॉर लूप का पहला पुनरावृत्ति तुरंत इसके बाद माता-पिता के लिए नहीं है। क्योंकि यह इस प्रदर्शित है

{% for object in object_list %} 

जिस तरह से यह अब है काम नहीं कर रहा:

{% for category in object.game.objectmeta.categories.all %} 
नहीं

इस एक: दूसरे शब्दों में मैं अगर यह पाश के लिए इस के 1 यात्रा है पता लगाने के लिए कोशिश कर रहा हूँ :

<div class='side_header' id='dark_gamelink_side'> 
    <a class='actionheader' href=""></a> 
</div> 

दो बार। नेस्टेड फोरलोप के पहले पुनरावृत्ति का पता कैसे लगाएं?

उत्तर

15

संपादित:

मैं इन चर इस्तेमाल नहीं किया है लेकिन मुझे लगता है forloop.parentloop.first यह करना चाहिए। अगर मुझे Django docs गलत समझने के लिए दोषी नहीं ठहराया गया है। ;-)

आपको यह जांचना चाहिए कि क्या आप parentloop के भीतर हैं और फिर पहले नेस्टेड नोड के भीतर हैं। कृपया इस संशोधित टेम्पलेट को आजमाएं। आपको सही दिशा देनी चाहिए।

{% if forloop.parentloop.first %}  
    I am in the first loop of the parent 
{% else %} 
{% if forloop.first %} 
    <div class='side_header' id='dark_gamelink_side'> 
     <a class='actionheader' href=""></a> 
    </div> 
{% endif %} 
{% endif %} 
+0

नहीं है कि ऐसा नहीं किया, बस खाली पेज बदल गया। – Jim

+0

@ मेरी राय में @ जिम (मैंने अपना जवाब संपादित कर लिया है) 'parentloop' की जांच करने से आपकी समस्या हल होनी चाहिए। – jazz

1

मुझे लगता है कि इस को हल करने के लिए सबसे अच्छा तरीका है कि अगर यह पाश में पहली यात्रा है पता लगाने के लिए, बल्कि अपने HTML लिखने के लिए इतना है कि लूप के बाहर पूरी तरह से नहीं है।

आपको केवल लूप के लिए HTML तत्व लिखना चाहिए जिसे आप वास्तव में प्रत्येक पुनरावृत्ति के लिए दोहराना चाहते हैं। यदि यह काम नहीं करता है, तो पुनर्विचार करें कि आप अपने दृश्य (ऑब्जेक्ट_लिस्ट, गेम, श्रेणी इत्यादि) को डेटा कैसे प्रदान कर रहे हैं ताकि आप अपना मार्कअप अधिक आसानी से लिख सकें।

आपके विचार की शुरुआत शायद कुछ इस तरह दिखेगा:

<div class='side_header' id='dark_gamelink_side'> 
    <a class='actionheader' href=""></a> 
</div> 
{% for object in object_list %} 
{% with game=object.game %} 
{% for category in object.game.objectmeta.categories.all %} 
{% if category.name|title == 'Puzzle' %} 
+0

कारण मैं ऐसा क्यों नहीं कर सकता क्योंकि बाद में मैं वेरिएबल्स का उपयोग कर रहा हूं जो केवल उस दूसरे के भीतर से एचटीएमएल के अंदर लूप के लिए उपलब्ध हैं जो स्थिर है। – Jim

संबंधित मुद्दे