Django模板中的索引引用列表项?

use*_*584 91 python django django-templates

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

换句话说,我如何{{ data[0] }}在模板语言中做相同的操作?

谢谢.

Mik*_*one 161

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

  • 令人讨厌的是我不能说`{{data.foo}}`,其中`foo`是一个带有索引值的变量,而不是属性名. (45认同)

Wei*_*gTu 65

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

例如在模板中获取List [x]:

在模板中

{% load index %}
{{ my_list|index:x }}
Run Code Online (Sandbox Code Playgroud)

templatetags/index.py

from django import template
register = template.Library()

@register.filter
def index(indexable, i):
    return indexable[i]
Run Code Online (Sandbox Code Playgroud)

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

它适用于"for"

{{ my_list|index:forloop.counter0 }}
Run Code Online (Sandbox Code Playgroud)

测试并且运行良好^ _ ^

  • 这真棒!但是使用{{List | index:x}}格式,如何访问通常使用点的值?{{(List | index:x).name}}显然不起作用.谢谢! (4认同)
  • 学习模板标签应用的最简单的解释之一! (2认同)

yil*_*yin 22

{{ data.0 }} 应该管用.

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