一尘不染

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

django

我在页面上有一些循环,需要根据循环号列出项目。

当我打电话时:

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

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

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

MyCustomRangeTag给了我range()它可以使用的Python ,而我已经拥有x了数量。x根据循环号,1、2、3等也是如此。这有可能吗?


阅读 393

收藏
2020-03-27

共1个答案

一尘不染

这不可能直接实现,因为Django认为这"x"是查找的关键mylist-而不是x 的值。因此,当x = 5Django尝试查找mylist["x"]而不是mylist[5]

使用以下过滤器作为解决方法:

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

并像这样使用

{{ mylist|lookup:x }}
2020-03-27