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

时间:2011-01-10 20:27:44

标签: python django django-templates

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

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

感谢。

4 个答案:

答案 0 :(得分:148)

看起来像{{ data.0 }}。请参阅Variables and lookups

答案 1 :(得分:56)

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

例如模板中的get List [x]:

模板中的

{% load index %}
{{ List|index:x }}

templatetags / index.py

from django import template
register = template.Library()

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

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

"对于"

,它可以正常工作
{{ List|index:forloop.counter0 }}

经过测试并且效果很好^ _ ^

答案 2 :(得分:21)

{{ data.0 }}应该有用。

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

答案 3 :(得分:1)

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

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

在这种情况下,您可以在模板中输入类似{{Queryset | index:x | get_item}}的内容来访问某些字典对象。它对我有用。