2009-11-09 9 views
132

Ich bekomme ein Array arr an meine Django-Vorlage übergeben. Ich möchte auf einzelne Elemente des Arrays im Array z. arr[0], arr[1] usw. anstelle der Schleife durch das gesamte Array.Zugriff auf Array-Elemente in einer Django-Vorlage?

Gibt es eine Möglichkeit, das in einer Django-Vorlage zu tun?

Vielen Dank.

+1

Sie Artikel wie dieser Zugriff 'arr .0', 'arr.1', ... Eine andere Lösung: Schreiben Sie Ihr eigenes Template-Tag' arr | array_item: "0" 'oder so ähnlich. – rphonika

+1

@rphonika Ja, Beispiel hier: http://StackOverflow.com/a/29664945/2714931 – WeizhongTu

Antwort

116
arr.0 
arr.1 

usw.

+6

wie dynamisch wie ex drucken: arr.variablename – karnaf

+0

Gibt es eine Möglichkeit, dies ohne magische Zahlen zu tun? Mit anderen Worten, um ".0 .1 .2 etc ..." zu "benennen"? Wie Array ["Vorname"], Array ["Nachname"] usw. – cyberjoac

+0

@cyberjoac in diesem Fall ein Diktat verwenden. In der Ansicht: d = {'first_name': 'foo', 'last_name': 'bar'}. In der Vorlage {{d.first_name}} wird es gut funktionieren. –

267

Denken Sie daran, dass die Punktnotation in einer Django-Vorlage für vier verschiedene Schreibweisen in Python verwendet wird. In einer Vorlage, bedeuten foo.bar können alle:

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

es sie in dieser Reihenfolge versucht, bis es eine Übereinstimmung findet. So foo.3 erhalten Sie Ihre Liste Index, weil Ihr Objekt ist kein Diktat mit 3 als Schlüssel, hat kein Attribut mit dem Namen 3, und hat keine Methode mit dem Namen 3.

+1

** + 1 ** Prost, das war sehr nützlich. –

+2

Sind nicht die ersten und letzten mehr wie 'foo ['bar']'? –

+2

Es scheint keine Möglichkeit zu geben, mit einem Variablenindex auf ein Listenelement zuzugreifen :( –

2

wenn Sie render eine Anfrage tou coctext einige Informationen: für exampel:

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

können Sie Zugang zu ihm auf Vorlage wie folgt aus: for variabels :

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

for array :

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

Sie können auch Array-Objekte in views.py Namen und zehn verwenden Sie es mögen:

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

, wenn es andere Problem, das ich Ihnen helfen möchte, ist

Verwandte Themen