Це може бути просто, але я озирнувся і не зміг знайти відповіді. Який найкращий спосіб посилатися на один елемент у списку із шаблону 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
спробу джанго data.obj
і data.obj()
. Якщо вони не працюють, вони намагаються data["obj"]
. У вашому випадку data[0]
можна записати як {{ data.0 }}
. Але я рекомендую вам data[0]
відкрити подання та надіслати його як окрему змінну.
@ jennifer06262016, ви можете точно додати ще один фільтр, щоб повернути об’єкти всередині Queryset django.
@register.filter
def get_item(Queryset):
return Queryset.your_item_key
У такому випадку ви введете щось подібне {{Queryset | index: x | get_item}} у свій шаблон, щоб отримати доступ до якогось об’єкта словника. Це працює для мене.
{{ data.foo }}
, деfoo
є змінна зі значенням індексу, а не ім'ям властивості.