Django - टेम्पलेट के पाश के लिए पुनरावृति संख्या


250

मैं अपने django टेम्पलेट प्रदर्शित करने वाले दिनों में लूप के लिए निम्न है। मुझे आश्चर्य है कि क्या लूप में संख्या (नीचे के मामले में) को पुनरावृत्त करना संभव है। या क्या मुझे इसे डेटाबेस में स्टोर करना है और फिर इसे दिनों.दिन_नंबर के रूप में क्वेरी करना है?

{% for days in days_list %}
    <h2># Day {{ i }} - From {{ days.from_location }} to {{ days.to_location }}</h2>
{% endfor %}

जवाबों:


594

Django प्रदान करता है। आप या तो उपयोग कर सकते हैं:

  • {{ forloop.counter }}इंडेक्स 1 से शुरू होता है ।
  • {{ forloop.counter0 }}सूचकांक 0 से शुरू होता है ।

टेम्पलेट में, आप यह कर सकते हैं:

{% for item in item_list %}
    {{ forloop.counter }} # starting index 1
    {{ forloop.counter0 }} # starting index 0

    # do your stuff
{% endfor %}

अधिक जानकारी के लिए : | अंतर्निहित टेम्पलेट टैग और फ़िल्टर | Django प्रलेखन


1
लेकिन यह लंबाई -1 देता है।
विकस कोहली

2
छोरों के लिए नेस्टेड के बारे में क्या? अगर हम आंतरिक या बाहरी पाश की गिनती करना चाहते हैं तो हम django को कैसे बता सकते हैं?
टिम वोकर

4
@ crey4fun, forloop.parentloopअधिक जानकारी के लिए डॉक्स देखें।
रोहन

91

यह भी एक इस का उपयोग कर सकते हैं:

{% if forloop.first %}

या

{% if forloop.last %}

10
सवाल का जवाब नहीं, लेकिन फिर भी कई लोगों के लिए जवाब है जो इस सवाल की खोज करेंगे। अच्छी चीज़!
kontur

1

[Django HTML टेम्पलेट अब के रूप में सूचकांक का समर्थन नहीं करता], लेकिन आप लक्ष्य प्राप्त कर सकते हैं:

यदि आप शब्दकोश में शब्दकोश के अंदर शब्दकोश का उपयोग करते हैं तो सूचकांक के रूप में कुंजी का उपयोग करके पुनरावृत्ति संभव है। उदाहरण:

{% for key, value in DictionartResult.items %} <!-- dictionartResult is a dictionary having key value pair-->
<tr align="center">
    <td  bgcolor="Blue"><a href={{value.ProjectName}}><b>{{value.ProjectName}}</b></a></td>
    <td> {{ value.atIndex0 }} </td>         <!-- atIndex0 is a key which will have its value , you can treat this key as index to resolve-->
    <td> {{ value.atIndex4 }} </td>
    <td> {{ value.atIndex2 }} </td>
</tr>
{% endfor %}

एल्सेफ आप सूची के अंदर शब्दकोश का उपयोग करते हैं तो न केवल पहले और अंतिम पुनरावृत्ति को नियंत्रित किया जा सकता है, बल्कि सभी सूचकांक को नियंत्रित किया जा सकता है। उदाहरण:

{% for key, value in DictionaryResult.items %}
    <tr align="center">
    {% for project_data in value %}
        {% if  forloop.counter <= 13 %}  <!-- Here you can control the iteration-->
            {% if forloop.first %}
                <td bgcolor="Blue"><a href={{project_data}}><b> {{ project_data }} </b></a></td> <!-- it will always refer to project_data[0]-->
            {% else %}
                <td> {{ project_data }} </td> <!-- it will refer to all items in project_data[] except at index [0]-->
            {% endif %}
            {% endif %}
    {% endfor %}
    </tr>
{% endfor %}

अगर अंत ;)

// आशा ने शब्दकोश, सूची, एचटीएमएल टेम्पलेट, लूप, इनर लूप, इफ एल्स के साथ समाधान को कवर किया है। अधिक तरीकों के लिए Django HTML डॉक्यूमेंटेशन: https://docs.djangoproject.com/en/2.2/ref/templates/builtins/

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.