Джанго перемешать в шаблонах - PullRequest
7 голосов
/ 23 августа 2011

как часть функции облака ключевых слов в Django, я пытаюсь вывести список строк.Существует ли фильтр для шаблонов, который позволяет перетасовывать элементы в списке?Я думал, что это будет просто, но я не могу найти подходящих фильтров в официальных документах.

Ответы [ 3 ]

13 голосов
/ 23 августа 2011

это просто сделать ваш.

# 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>
2 голосов
/ 24 августа 2011

Просто добавьте, если это набор запросов, он выдаст ошибку, так как список объектов не может быть назначен. Вот исправление для кода christophe31:

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

@register.filter
def shuffle(arg):
    return random.shuffle([i for i in arg[:]])
0 голосов
/ 08 июля 2013

Объект 'QuerySet' не поддерживает назначение элементов

...