2009-11-09 16 views
132

Otrzymuję tablicę arr przekazaną do mojego szablonu Django. Chcę uzyskać dostęp do poszczególnych elementów tablicy w tablicy np. arr[0], arr[1] itd. Zamiast przechodzić przez całą tablicę.Jak uzyskać dostęp do elementów tablicy w szablonie Django?

Czy można to zrobić w szablonie Django?

Dziękuję.

+1

Można uzyskać dostęp do elementu tak 'arr .0', 'arr.1', ... Inne rozwiązanie: napisz własny szablon znacznika' arr | array_item: "0" 'lub coś w tym stylu. – rphonika

+1

@rphonika Tak, przykład tutaj: http://stackoverflow.com/a/29664945/2714931 – WeizhongTu

Odpowiedz

116
arr.0 
arr.1 

itp

+6

jak wydrukować dynamiczny jak np: arr.variablename – karnaf

+0

Czy jest jakiś sposób, aby to zrobić bez magicznych liczb? Innymi słowy, aby "wymienić" .0 .1 .2 itd ...? Takich jak tablica ["imię"], tablica ["nazwisko"] itp. – cyberjoac

+0

@cyberjoac w takim przypadku użyj dykt. W widoku: d = {'first_name': 'foo', 'last_name': 'bar'}. W szablonie {{d.first_name}} będzie działać dobrze. –

267

Pamiętaj, że notacja kropki w szablonie Django służy do czterech różnych zapisów w Pythonie. W szablonie, foo.bar może oznaczać dowolny z:

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

próbuje je w tej kolejności, aż znajdzie dopasowanie. Tak więc foo.3 dostaniesz twój indeks listy, ponieważ twój obiekt nie jest dyktatem z 3 jako kluczem, nie ma atrybutu o nazwie 3 i nie ma metody o nazwie 3.

+1

** + 1 ** Pozdrawiam, to było niezmiernie przydatne. –

+2

Czy nie pierwsze i ostatnie bardziej przypominają 'foo ['bar']'? –

+2

Wygląda na to, że nie ma możliwości dostępu do elementu listy za pomocą indeksu zmiennej :( –

2

po tobie render prośba tou coctext informacje: dla exampel:

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

można Dostęp do niego na szablonie jak ten: for variabels :

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

for array :

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

można również nazwać obiekty tablicowe w views.py dziesięć używać go jak:

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

czy istnieje inny problem i chcą pomóc

Powiązane problemy