2010-06-03 15 views
7

Tengo opiniones de los usuarios en mi sitio. Cada revisión tiene una calificación de 1-5 estrellas. Quiero imprimir muchas estrellas. ¿Cómo lo hago? Solo veo {% for X in Y %} que le permite iterar sobre una lista, pero no una cierta cantidad de veces.¿Cómo se repiten X veces en Django?

Respuesta

10

Uso del Template range filter por 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

Un poco tonto que necesito un filtro personalizado .... pero trabajos. Gracias. – mpen

+1

Sí, es tonto, pero haces lo que tienes que hacer ... – jball

4

No hay necesidad de un filtro personalizado - make_list hará el trabajo:

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

Estoy bastante seguro de que esto * no * funcionará. Eso devuelve '[1,2,3]' * not * '[0,1,2, ..., 122]'. – mpen

+0

Sí, eso es lo que pretendía que hiciera, como solicitó el OP. –

+2

Soy el OP, y estoy bastante seguro de que eso no es lo que solicité ... ¿cómo es este bucle "cierto número de veces" o "X veces" dado una calificación (entera) entre 1 y 5? – mpen

Cuestiones relacionadas