Элемент списка ссылок по индексу в шаблоне Django?

Это может быть просто, но я огляделся и не мог найти ответа. Каков наилучший способ ссылки на один элемент в списке из шаблона Django?

Другими словами, как я могу сделать эквивалент {{ data[0] }} внутри языка шаблона?

Спасибо.

Ответ 2

Лучший способ: пользовательский шаблонный фильтр: https://docs.djangoproject.com/en/dev/howto/custom-template-tags/

например, получить my_list [x] в шаблонах:

в шаблоне

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

templatetags/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]

Он отлично работает с "для"

{{ my_list|index:forloop.counter0 }}

Проверено и хорошо работает ^ _ ^

Ответ 3

{{ data.0 }} должен работать.

Скажем, вы написали data.obj django try data.obj и data.obj(). Если они не работают, он пытается data["obj"]. В вашем случае data[0] может быть записано как {{ data.0 }}. Но я рекомендую вам тянуть data[0] в представлении и отправлять его как отдельную переменную.

Ответ 4

Присоединяйтесь к ответу WeizhongTu

Он отлично работает с "for"

{{ List|index:forloop.counter0 }}

Ответ 5

@jennifer06262016, вы можете определенно добавить еще один фильтр, чтобы возвращать объекты внутри Queryset django.

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

В этом случае вы должны ввести в свой шаблон что-то вроде {{Queryset | index: x | get_item}} для доступа к некоторому объекту словаря. Это работает для меня.