Django 在模板中随机播放

发布于 2024-11-30 18:17:57 字数 90 浏览 0 评论 0原文

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

as part of a keyword cloud function in Django, I am trying to output a list of strings. Is there a filter for templates which allows you to shuffle items in a list? I thought this would be straightforward, but I can't find any applicable filters in the official docs.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

飘逸的'云 2024-12-07 18:17:57

制作你的很简单。

# 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>

it's straightforward to make yours.

# 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

and then in your template:

{% load shuffle %}
<ul>
{% for item in list|shuffle %}
    <li>{{ item }}</li>
{% endfor %}
</ul>
我ぃ本無心為│何有愛 2024-12-07 18:17:57

只是补充一下,如果它是一个查询集,它会抛出一个错误,因为无法分配对象列表。这是 christophe31 的修复代码:

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

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

Just to add, if it's a query set, it'll throw an error since object list can't be assigned. Here is a fix fr christophe31 code:

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

@register.filter
def shuffle(arg):
    return random.shuffle([i for i in arg[:]])
祁梦 2024-12-07 18:17:57

“QuerySet”对象不支持项目分配

'QuerySet' object does not support item assignment

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文