2011-11-10 8 views
5

मैं एक दृश्य में एक सूची पास कर रहा हूँ। मेरी सरणी इस तरह दिखती है: [football, basketball, soccer]। मेरे विचार में, मैं कुछ इस तरह प्रदर्शित करना चाहते हैं:Django के साथ सूची पुनरावृत्ति के दौरान सूचकांक कैसे प्रदर्शित करें?

1. football 
2. basketball 
3. soccer 

इसका मतलब यह है कि मैं सूची है कि सरणी में भेजा जाता है के माध्यम से पुनरावृति करना होगा, तत्वों पर पाश के लिए एक है। मैं टेम्पलेट फ़ाइल में यह कैसे करूं?

प्रत्येक तत्व के लिए, मुझे इसकी अनुक्रमणिका प्राप्त करनी होगी और इसमें 1 जोड़ना होगा। अब, मुझे नहीं पता कि विचारों में इसे कैसे किया जाए। ऐसा करने का एक तरीका मैंने ऐसा करने के बारे में सोचा था, जैसे {'1', 'football': '2', 'basketball': '3', 'soccer'}, लेकिन चूंकि मेरे पास पहले से ही एक सूची प्रारूप में डेटा है, इसलिए मैं इसे परिवर्तित नहीं करूँगा।

उत्तर

21

आप forloop.counter टेम्पलेट चर चाहते हैं।

पाश के लिए

The Loop के भीतर उपलब्ध अनेक कारकों सेट:

(1-अनुक्रमित) पाश की वर्तमान यात्रा forloop.counter

तो अपने कोड लगेगा जैसे:

{% for sport in sports %} 
    <p>{{forloop.counter}}. {{ sport }}</p> 
{% endfor %} 

बेशक, केवल आपके प्रश्न में डेटा को प्रदर्शित करने के लिए, आसान जिस तरह से सिर्फ एक का आदेश दिया सूची में आइटम्स दिखाने के लिए है, और ब्राउज़र आप के लिए नंबरिंग करना होगा:

<ol> 
{% for sport in sports %} 
    <li>{{ sport }}</li> 
{% endfor %} 
</ol> 
3

@nrabinowitz से जवाब एक अच्छा समाधान है आप किसी टेम्पलेट में इसका इस्तेमाल करना चाहते हैं। लेकिन मुझे लगता है कि आप इसे देखने से पूछ रहे थे।

एक सूची से सूचकांक और मूल्य प्राप्त करने के enumerate समारोह उपयोग कर रहा है, इस तरह का सबसे अच्छा तरीका:

>>> sports = ['football', 'basketball', 'soccer'] 
>>> for i,sport in enumerate(sports): 
...  print "%d. %s" % (i, sport) 
0. football 
1. basketball 
2. soccer 

या, यदि आप एक 1-आधारित सूचकांक हैं:

>>> for i,sport in enumerate(sports): 
...  print "%d. %s" % (i+1, sport) 
1. football 
2. basketball 
3. soccer 
संबंधित मुद्दे