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

标签 django django-templates

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

当我打电话时:

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

一切正常,但是我真正需要的是:
{% for x in somenumber|MyCustomRangeTag %}
    {{ mylist.x }}
{% endfor %}

MyCustomRangeTag给我提供了Python range(),它可以正常工作,并且我已经将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 }}

关于django - 在Django模板中动态获取列表项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8948430/

相关文章:

python - 该字段是通过惰性引用 'auth.user' 声明的,但应用程序 'auth' 未安装

Django ajax 文件上传集成到模型表单

python - 编写将分钟整数转换为格式为 "X hour(s) Y minute(s)"的字符串的函数的最佳方法是什么?

python - Django float 格式只得到 float 后的数字

django - 在Django模板中动态创建列表

python - 在 Django 中使用 Context 时如何禁用 HTML 编码

django - App Engine 延迟库中的永久任务失败

python - 确保目录路径是 Django 项目

xml - 我可以在 Django 中使用 XSLT 吗?

python - Django:使用 Javascript 在我的模板中解析 JSON