2010-06-03 19 views
7

Sitemde kullanıcı yorumlarım var. Her bir gözden geçirme 1-5 yıldıza sahiptir. Bu kadar çok yıldız basmak istiyorum. Nasıl yaparım? Sadece bir liste üzerinde yinelemenize izin veren {% for X in Y %}'u görüyorum, ancak belirli sayıda değil.Django'da X kez nasıl döngü yapılır?

cevap

10

Kullanım Template range filterzalun tarafından:

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

Özel bir filtreyi gerektiğini Kinda dilsiz .... ama Eserleri. Teşekkürler. – mpen

+1

Evet, bu aptalca, ama yapman gerekeni yapıyorsun ... – jball

4

Özel filtrenin gerek yok - make_list iş yapacak:

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

Bu işe yaramayacağından eminim. Bu, [1,2,3] '* değil *' [0,1,2, ..., 122] 'döndürür. – mpen

+0

Evet, bunu yapmak istedim - OP'nin istediği gibi. –

+2

OP'im, ve eminim ki istediğim şey bu değildi ... 1 ile 5 arasında bir (tamsayı) derecelendirme verildiğinde "belirli sayıda" veya "X kere" nasıl dönüyor? – mpen

İlgili konular