随机化 jinja 2 中的列表元素

Randomize elements of a list in jinja 2

是否可以在 jinja 2 中对列表进行随机排序?

给定一个像 (1, 2, 3) 这样的列表,每个得到不同的结果 运行 比如:

(3, 2, 1)
(3, 1, 2)
.....

没有可用的 shuffle 过滤器,但创建一个很容易:

import random

def filter_shuffle(seq):
    try:
        result = list(seq)
        random.shuffle(result)
        return result
    except:
        return seq

然后你 register as a custom filter:

environment.filters['shuffle'] = filter_shuffle

并将其用作过滤器:

{% for elem in some_sequence|shuffle %}
    {{ elem }}
{% endfor %}

或者,在将列表传递给模板之前打乱列表。

import random


@app.template_filter('shuffle')
def filter_shuffle(seq):
    try:
        result = list(seq)
        random.shuffle(result)
        return result
    except:
        return seq

然后在模板中

{% for option in list|shuffle  %}