我在页面上有一些循环,需要根据循环号列出项目。
当我打电话时:
{{ mylist.1 }} {{ mylist.2 }} {{ mylist.3 }}
一切正常,但是我真正需要的是:
{% for x in somenumber|MyCustomRangeTag %} {{ mylist.x }} {% endfor %}
MyCustomRangeTag给了我range()它可以使用的Python ,而我已经拥有x了数量。x根据循环号,1、2、3等也是如此。这有可能吗?
range()
x
这不可能直接实现,因为Django认为这"x"是查找的关键mylist-而不是x 的值。因此,当x = 5Django尝试查找mylist["x"]而不是mylist[5]。
"x"
mylist
x = 5Django
mylist["x"]
mylist[5]
使用以下过滤器作为解决方法:
@register.filter def lookup(d, key): return d[key]
并像这样使用
{{ mylist|lookup:x }}