Список ссылок по индексу в шаблоне Django? - PullRequest
85 голосов
/ 10 января 2011

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

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

Спасибо.

Ответы [ 4 ]

149 голосов
/ 10 января 2011

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

59 голосов
/ 16 апреля 2015

Лучший способ: пользовательский шаблонный фильтр: 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]

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

{{ List|index:forloop.counter0 }}

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

21 голосов
/ 10 января 2011

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

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

1 голос
/ 15 апреля 2017

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

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

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

...