在 Django 模板中按索引引用列表项?

这也许很简单,但我环顾四周,找不到答案。从 Django 模板引用列表中单个项目的最佳方法是什么?

换句话说,如何在模板语言中执行与 {{ data[0] }}等效的操作?

142411 次浏览

它看起来像 \{\{ data.0 }}。参见 变量和查找

\{\{ data.0 }}应该能用。

假设你写了 data.obj姜戈试了 data.objdata.obj()。如果他们不工作,它尝试 data["obj"]。在你的情况下,data[0]可以写成 \{\{ data.0 }}。但是我建议您将 data[0]放在视图中,并将其作为单独的变量发送。

更好的方法: 自定义模板过滤器: https://docs.djangoproject.com/en/dev/howto/custom-template-tags/

例如在模板中获取 my _ list [ x ] :

模板

{% load index %}
\{\{ my_list|index:x }}

模板标签/index.py

from django import template
register = template.Library()


@register.filter
def index(indexable, i):
return indexable[i]

如果是 my_list = [['a','b','c'], ['d','e','f']],可以在模板中使用 \{\{ my_list|index:x|index:y }}得到 my_list[x][y]

它可以和“ for”一起工作

\{\{ my_list|index:forloop.counter0 }}

经过测试,运行良好 ^ _ ^

@ jennifer06262016,您完全可以添加另一个过滤器来返回 django Queryset 中的对象。

@register.filter
def get_item(Queryset):
return Queryset.your_item_key

在这种情况下,可以在模板中键入类似于\{\{ Queryset | index: x | get _ item }}的内容来访问某个字典对象。对我有用。