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


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

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

спасибо.

4 77

4 ответа:

похоже {{ data.0 }}. Смотрите переменные и поиска.

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

например, получить список[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]

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

{{ List|index:forloop.counter0 }}

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

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

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

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

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

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