2009-11-09 2 views
132

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

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

Thank you.

+1

Вы можете получить доступ пункт как это 'обр .0', 'arr.1', ... Другое решение: напишите свой собственный тег шаблона' arr | array_item: "0" 'или что-то вроде этого. – rphonika

+1

@rphonika Да, пример здесь: http://stackoverflow.com/a/29664945/2714931 – WeizhongTu

ответ

28

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

116
arr.0 
arr.1 

т.д.

+6

Как печатать динамику, например ex: arr.variablename – karnaf

+0

Есть ли способ сделать это без магических чисел? Другими словами, чтобы «назвать» .0 .1 .2 и т. Д.?? Например, массив ["first name"], массив ["фамилия"] и т. Д. – cyberjoac

+0

@cyberjoac в этом случае используйте dict. В представлении: d = {'first_name': 'foo', 'last_name': 'bar'}. В шаблоне {{d.first_name}} будет работать нормально. –

267

Помните, что точечная нотация в шаблоне 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.

+1

** + 1 ** Привет, это было очень полезно. –

+2

Не первый и последний более похожий на 'foo ['bar']'? –

+2

Невозможно получить доступ к элементу списка с помощью индекса переменной :( –

2

, когда вы render a request ие 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 %} 

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