django shuffle in templates

时间:2011-08-23 14:27:16

标签: django templates shuffle

作为Django中关键字云功能的一部分,我试图输出一个字符串列表。是否有模板过滤器,允许您在列表中随机播放项目?我认为这很简单,但我在官方文档中找不到任何适用的过滤器。

3 个答案:

答案 0 :(得分:13)

直接制作你的。

# app/templatetags/shuffle.py
import random
from django import template
register = template.Library()

@register.filter
def shuffle(arg):
    tmp = list(arg)[:]
    random.shuffle(tmp)
    return tmp

然后在你的模板中:

{% load shuffle %}
<ul>
{% for item in list|shuffle %}
    <li>{{ item }}</li>
{% endfor %}
</ul>

答案 1 :(得分:2)

只是添加,如果它是一个查询集,它将抛出一个错误,因为无法分配对象列表。这是一个修复fr christophe31代码:

import random
from django import template
register = template.Library()

@register.filter
def shuffle(arg):
    return random.shuffle([i for i in arg[:]])

答案 2 :(得分:0)

'QuerySet'对象不支持项目分配