Это может быть просто, но я огляделся и не нашел ответа. Как лучше всего ссылаться на один элемент в списке из шаблона Django?
Другими словами, как мне сделать эквивалент {{ data[0] }}
в языке шаблонов?
Спасибо.
Это может быть просто, но я огляделся и не нашел ответа. Как лучше всего ссылаться на один элемент в списке из шаблона Django?
Другими словами, как мне сделать эквивалент {{ data[0] }}
в языке шаблонов?
Спасибо.
Ответы:
Похоже {{ data.0 }}
. См. Переменные и поисковые запросы .
Лучший способ: настраиваемый фильтр шаблонов: 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 }}
Протестировано и работает хорошо ^ _ ^
{% for id in article_details.heading.contents.article_ids %} {% if id.type == 'DOI' %} {{ article_details.heading.contents.article_ids.forloop.counter0.value }} {% endif %} {% endfor %}
{{ data.0 }}
должно сработать.
Допустим, вы написали data.obj
попытки django data.obj
и data.obj()
. Если они не работают, он пытается data["obj"]
. В вашем случае data[0]
может быть записано как {{ data.0 }}
. Но я рекомендую вам вытащить data[0]
представление и отправить его как отдельную переменную.
@ jennifer06262016, вы определенно можете добавить еще один фильтр для возврата объектов внутри набора запросов django.
@register.filter
def get_item(Queryset):
return Queryset.your_item_key
В этом случае вы должны ввести что-то вроде этого {{Queryset | index: x | get_item}} в свой шаблон, чтобы получить доступ к некоторому объекту словаря. Меня устраивает.
{{ data.foo }}
, гдеfoo
находится переменная со значением индекса, а не с именем свойства.