2015-07-06 49 views
0

通过名单上有自定义模板标签:迭代通过自定义模板标签

@register.simple_tag 
def random_num(): 
    numbers = range(1,18) 
    shuffle(numbers) 
    return numbers 

模板:

{% for num in random_num %} 
    {{ num }} 
{% endfor %} 

给什么。 {% random_num %}很好地打印整个列表,但我需要遍历所有元素。问题是什么?

回答

3

您不能使用templatetag作为变量,所以:

{% for num in random_num %} 

不能工作。

您需要将您的templatetag更改为assignment tag

@register.assignment_tag 
def random_num(): 
    numbers = range(1,18) 
    shuffle(numbers) 
    return numbers 

...,并在模板中使用as条款:

{% random_num as numlist %} 
{% for num in numlist %} 
    {{ num }} 
{% endfor %} 
+0

谢谢!不知道分配标签.. –