【问题标题】:Showing random objects in Django template在 Django 模板中显示随机对象
【发布时间】:2014-02-06 17:18:24
【问题描述】:

在我的 Django 模板中,当我遍历一个对象列表时,我想要一个列表项说:

<li><a href="{{ obj.green_link }}">Blah</a></li>

然后另一个做:

<li><a href="{{ obj.blue_link }}">Blah</a></li>

我认为 value|random 是一种选择,但由于某种原因这不起作用:

{% ifequal [1, 2]|random 1 %}
    <a href="{{ post.adfly_url }}">{{ post.title }}</a>

{% else %}
    <a href="{{ post.url }}">{{ post.title }}</a>

{% endifequal %}

这样做会引发此错误:

u'ifequal' takes two arguments

有没有办法做到这一点?我认为这应该很简单,但我意识到 Django 模板语言不允许变量赋值。

谢谢!

【问题讨论】:

    标签: django random django-templates


    【解决方案1】:

    你不能像那样将列表直接放入模板中,make_list 就是你所追求的。

    make_list 返回一个字符串列表,所以这会起作用。

    {% if 12|make_list|random == '1' %}
       <li><a href="{{ obj.green_link }}">Blah</a></li>
    {% else %}
       <li><a href="{{ obj.blue_link }}">Blah</a></li>
    {% endif %}
    

    【讨论】:

    • 鉴于那段代码有多丑陋,把它变成一个非常快速的类函数的最好方法是什么?在模板中会更短吗?
    • 我不知道,我认为它可能更丑。但是,是的,你当然可以 - 也许在你的 obj 对象上写一个方法: def random_link(self): return random.choice((self.green_link, self.blue_link))
    猜你喜欢
    • 2018-10-28
    • 2013-04-27
    • 1970-01-01
    • 2012-09-12
    • 1970-01-01
    • 2023-03-07
    • 2020-07-05
    • 1970-01-01
    • 2013-10-12
    相关资源
    最近更新 更多