Как получить доступ к элементам массива в шаблоне Django?

127

Я получаю массив arr, переданный в мой шаблон Django. Я хочу получить доступ к отдельным элементам массива в массиве, например. arr[0], arr[1] и т.д. вместо цикла через весь массив.

Есть ли способ сделать это в шаблоне Django?

Спасибо.

  • 1
    Вы можете получить доступ к элементу, подобному этому arr.0 , arr.1 , ... Другое решение: напишите свой собственный тег шаблона arr|array_item: "0" или что-то вроде этого.
  • 1
    @rphonika Да, пример здесь: stackoverflow.com/a/29664945/2714931
Теги:

4 ответа

248

Помните, что точечная нотация в шаблоне Django используется для четырех различных обозначений в Python. В шаблоне foo.bar может означать любой из:

foo[bar]       # dictionary lookup
foo.bar        # attribute lookup
foo.bar()      # method call
foo[bar]       # list-index lookup

Он пробует их в этом порядке, пока не найдет совпадение. Таким образом, foo.3 получит ваш индекс списка, потому что ваш объект не является типом с 3 в качестве ключа, не имеет атрибута с именем 3 и не имеет метода с именем 3.

  • 3
    Разве первый и последний больше не похожи на foo['bar'] ?
  • 2
    Кажется, нет никакого способа получить доступ к элементу списка, используя переменную index :(
Показать ещё 3 комментария
118
arr.0
arr.1

и др.

  • 9
    как печатать динамически, как например: arr.variablename
  • 0
    Есть ли способ сделать это без магических чисел? Другими словами, чтобы «назвать» .0 .1 .2 и т.д ...? Например, массив ["имя"], массив ["фамилия"] и т. Д.
Показать ещё 1 комментарий
28

Вы можете получить доступ к элементам последовательности с arr.0 arr.1 и т.д. Для получения дополнительной информации см. раздел системы шаблонов Django в книге django.

1

когда вы render запросите tou coctext некоторую информацию: для примера:

return render(request, 'path to template',{'username' :username , 'email'.email})

вы можете присоединиться к нему в шаблоне следующим образом: for variabels :

{% if username %}{{ username }}{% endif %}

for array :

{% if username %}{{ username.1 }}{% endif %}
{% if username %}{{ username.2 }}{% endif %}

вы также можете назвать объекты массива в views.py, а десять использовать его как:

{% if username %}{{ username.first }}{% endif %}

если есть другая проблема, я хочу помочь вам

Ещё вопросы

Сообщество Overcoder
Наверх
Меню