2010-06-03 30 views
7

Tôi có đánh giá của người dùng trên trang web của mình. Mỗi bài đánh giá có xếp hạng từ 1 đến 5 sao. Tôi muốn in nhiều ngôi sao đó. Tôi phải làm nó như thế nào? Tôi chỉ thấy {% for X in Y %} cho phép bạn lặp qua danh sách, nhưng không phải một số lần nhất định.Làm thế nào để lặp X lần trong Django?

Trả lời

10

Sử dụng Template range filter bởi 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 câm mà tôi cần một bộ lọc tùy chỉnh .... nhưng nó công trinh. Cảm ơn. – mpen

+1

Vâng, nó là câm, nhưng bạn làm những gì bạn phải làm ... – jball

4

Không cần một bộ lọc tùy chỉnh - make_list sẽ thực hiện công việc:

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

Tôi khá chắc chắn điều này * sẽ không * làm việc. Điều đó trả về '[1,2,3]' * không * '[0,1,2, ..., 122]'. – mpen

+0

Có, đó là những gì tôi dự định để làm - như OP được yêu cầu. –

+2

Tôi là OP, và tôi khá chắc chắn đó không phải là những gì tôi yêu cầu ... làm thế nào là điều này lặp một "số lần nhất định" hoặc "X lần" cho một (số nguyên) đánh giá giữa 1 và 5? – mpen

Các vấn đề liên quan