动态获取Django模板中的列表项

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (20)

我有一些循环在页面上,需要列表项目取决于循环编号。

当我调用:

{{ mylist.1 }}
{{ mylist.2 }}
{{ mylist.3 }}

一切正常,但我真正需要的是:

{% for x in somenumber|MyCustomRangeTag %}
    {{ mylist.x }}
{% endfor %}

MyCustomRangeTag给我Pythonrange()它起作用了,我已经有了x作为号码。所以x是1,2,3等,取决于循环号。这有可能吗?

提问于
用户回答回答于

这是不可能的,因为Django认为"x"是查找的关键。mylist-而不是价值x。所以,当x = 5,Django试图抬起头来mylist["x"]而不是mylist[5]...

使用以下筛选器作为解决办法:

@register.filter
def lookup(d, key):
    return d[key]

然后用它就像

{{ mylist|lookup:x }}
用户回答回答于

我认为内置的片模板标记值得使用一段时间。

{{ item | slice:"2" }} #gets the third element of the list

扫码关注云+社区