我有一个包含 52 个表情符号的列表,但我只希望10 个随机出现在表情符号备忘单/键盘中。
这是我正在做的:
Django View 正在向我的模板传递 1 到 52 之间的 10 个随机数的列表,如下所示:context["random"] = random.sample(xrange(1,52),10)
另外,还有一个包含 52 个表情符号的列表被传递,包含在上下文变量 context["emojis"] 中。这个列表看起来像这样:
( [':)', ':-)', ':=)'], [':(', ':-(', ':=('], [';)' , ';-)', ';=)', '(wink)'], [';(', ';-(', ';=(', '(cry)'], [':*' , ':-*', ':=*', '(kiss)'], [':|', ':-|', ':=|', '(无语)'], [':-? ', ':?', ':=?', '(think)'], ['|(', '|-(', '|=(', '(dull)'], ['|-) ', 'I-)', 'I=)', '(snooze)'], ['])', ']=)', '(grin)'], [':$', ':-$ ', ':=$', '(blush)'], [':D', ':-D', ':=D', ':d', ':-d', ':=d', '(笑)'], [':O', ':-O', ':=O', ':o', ':-o', ':=o', '(惊讶)'], [ '8)', '8-)', '8=)', 'B)', 'B-)', 'B=)', '(cool)'], ['8-|', 'B -|', '8|', 'B|', '8=|', 'B=|', '(nerd)'])
这些不全是 52 个表情符号,但您明白了。如果我在模板中打印 {{ emojis.5 }},我会看到 [':*', ':-*', ':=*', '(kiss) ']。这个结果本身就是一个列表,因为亲吻表情符号可以通过所有这些符号来制作。
总而言之,在这 52 个子列表中,我希望 10 个随机出现在我的模板中。此外,我只想在每个随机选择的子列表中打印第一项。
这是我实际尝试的:
{% for index in random %}
{{ emojis.index.0 }}
{% endfor %}
什么都没有显示。在我的脑海里,我认为这会通过 emojis.index 给我 10 个随机子列表,而 .0 会确保它只返回第一个项目。
请您参考如下方法:
This这就是为什么那行不通的原因。 TLDR:动态索引在 Django 中不起作用。您可以执行 {{ foo.5 }},但不能执行 {{ foo.{{bar}} }}
然而,有效的是在传递之前在您的上下文中构建您的随机列表(假设 emojis 是一个包含您所有表情符号的变量):
random_indexes = random.sample(xrange(1,52),10) context["random_emojis"] = [emojis[ind] for ind in random_indexes]
然后在你的模板中:
{% for emoji in random_emojis %} {{ 表情符号.0 }} {% endfor %}
