2010-06-03 3 views
7

Ich habe Nutzerbewertungen auf meiner Website. Jede Bewertung hat eine Bewertung von 1-5 Sternen. Ich möchte so viele Sterne drucken. Wie mache ich es? Ich sehe nur {% for X in Y %}, mit dem Sie über eine Liste iterieren können, aber nicht eine bestimmte Anzahl von Malen.Wie X-Zeiten in Django Schleife?

Antwort

10

Verwenden Sie die Template range filter von zalun:

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

Kinda dumm, dass ich einen benutzerdefinierten Filter brauche .... aber es funktioniert. Vielen Dank. – mpen

+1

Ja, es ist dumm, aber Sie tun, was Sie tun müssen ... – jball

4

Keine Notwendigkeit für einen benutzerdefinierten Filter - make_list wird die Arbeit machen:

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

Ich bin mir ziemlich sicher, dass das * nicht funktionieren wird. Das ergibt "[1,2,3]' * not * '[0,1,2, ..., 122]'. – mpen

+0

Ja, genau das habe ich mir vorgenommen - wie das OP gefordert hat. –

+2

Ich bin der OP, und ich bin mir ziemlich sicher, dass das nicht, was ich angefordert habe ... Wie ist diese Schleife eine "bestimmte Anzahl von Malen" oder "X-mal" eine (ganzzahlige) Bewertung zwischen 1 und 5? – mpen

Verwandte Themen