2010-06-03 59 views
7

我在我的网站上有用户评论。每个评论的评分为1-5星。我想打印那么多明星。我该怎么做?我只看到{% for X in Y %},它可以让你遍历一个列表,但不是一定的次数。如何在Django中循环X次?

回答

10

使用Template range filter通过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

有点儿哑,我需要一个自定义过滤器....但它作品。谢谢。 – mpen 2010-06-03 21:23:36

+1

是啊,这是愚蠢的,但你做你必须做的... – jball 2010-06-03 21:28:31

4

无需自定义过滤器 - make_list将做的工作:

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

我很确定这*不会*工作。这会返回'[1,2,3]'* not *'[0,1,2,...,122]'。 – mpen 2010-06-04 00:37:58

+0

是的,这正是我打算让它做的 - 正如OP所要求的那样。 – 2010-06-04 06:09:28

+2

我是OP,我敢肯定,这不是我所要求的...在1和5之间给定(整数)等级的情况下,如何循环“特定次数”或“X次”? – mpen 2010-06-04 07:54:51