2010-06-03 23 views
7

मेरे पास मेरी साइट पर उपयोगकर्ता समीक्षाएं हैं। प्रत्येक समीक्षा में 1-5 सितारों की रेटिंग होती है। मैं उन कई सितारों को मुद्रित करना चाहता हूं। मैं यह कैसे करुं? मुझे केवल {% for X in Y %} दिखाई देता है जो आपको एक सूची में फिर से चालू करने देता है, लेकिन कुछ निश्चित समय नहीं।Django में एक्स बार लूप कैसे करें?

उत्तर

10

उपयोग zalun द्वारा Template range filter:

from django.template import Library 

register = Library() 

@register.filter 
def get_range(value): 
    """ 
    Filter - returns a list containing range made from given value 
    Usage (in template): 

    <ul>{% for i in 3|get_range %} 
     <li>{{ i }}. Do something</li> 
    {% endfor %}</ul> 

    Results with the HTML: 
    <ul> 
     <li>0. Do something</li> 
     <li>1. Do something</li> 
     <li>2. Do something</li> 
    </ul> 

    Instead of 3 one may use the variable set in the views 
    """ 
    return range(value) 
+1

किंडा गूंगा है कि मैं एक कस्टम फिल्टर की आवश्यकता .... लेकिन यह काम करता है। धन्यवाद। – mpen

+1

हाँ, यह गूंगा है, लेकिन आप जो करना चाहते हैं वह करें ... – jball

4

कस्टम फ़िल्टर के लिए कोई ज़रूरत नहीं - make_list काम करेगा:

{% for i in '123'|make_list %} 
+2

मुझे पूरा यकीन है कि यह * काम नहीं करेगा। यह '1,2,3]' * नहीं * '[0,1,2, ..., 122]' लौटाता है। – mpen

+0

हां, यही वह है जो मैं इसके लिए करना चाहता था - जैसा कि ओपी ने अनुरोध किया था। –

+2

मैं ओपी हूं, और मुझे पूरा यकीन है कि मैंने जो अनुरोध नहीं किया है ... यह कैसे लूपिंग को "निश्चित संख्या" या "एक्स टाइम्स" को 1 और 5 के बीच एक (पूर्णांक) रेटिंग दिया गया है? – mpen

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