Wie greife ich auf Array-Elemente in einer Django-Vorlage zu?

166

Ich erhalte ein Array, arrdas an meine Django-Vorlage übergeben wird. Ich möchte auf einzelne Elemente des Arrays im Array (z. B. ) usw. zugreifen arr[0], arr[1]anstatt das gesamte Array zu durchlaufen.

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

miket
quelle
3
Sie können Artikel wie dieser Zugang arr.0, arr.1... Ein andere Lösung: Schreiben Sie Ihren eigenen Template - Tag arr|array_item: "0" oder so etwas.
Rphonika
1
@rphonika Ja, Beispiel hier: stackoverflow.com/a/29664945/2714931
WeizhongTu

Antworten:

303

Denken Sie daran, dass die Punktnotation in einer Django-Vorlage für vier verschiedene Notationen in Python verwendet wird. foo.barKann in einer Vorlage Folgendes bedeuten:

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

Es versucht sie in dieser Reihenfolge, bis es eine Übereinstimmung findet. So foo.3erhalten Sie Ihre Liste Index , weil das Objekt nicht ein dict mit 3 als Schlüssel ist, hat kein Attribut 3 genannt, und keine Methode 3 genannt hat.

Ned Batchelder
quelle
3
Sind nicht die ersten und letzten eher so foo['bar']?
Bob Stein
2
Es scheint keine Möglichkeit zu geben, mit einem variablen Index auf ein Listenelement zuzugreifen :(
Vicky Chijwani
Stimmen Sie mit @VickyChijwani überein: Die vierte Option oben ist ungültig. Django-Vorlagen scheinen keine
Listenindex-Suchvorgänge
@hiyume Wie kann man das überwinden?
Csaba Toth
Ich verstehe nicht, dass ich das in der offiziellen Dokumentation nicht finden konnte. Könnten Sie eine Quelle für diesen Beitrag angeben? Ich bin auch erstaunt, wie diese Antwort derzeit nicht akzeptiert wird.
Kaszanas
148
arr.0
arr.1

etc.

Ofri Raviv
quelle
10
wie man dynamisch druckt wie ex: arr.variablename
Nandha Kumar
Gibt es eine Möglichkeit, dies ohne magische Zahlen zu tun? Mit anderen Worten, um die .0 .1 .2 etc "zu" benennen ...? Wie Array ["Vorname"], Array ["Nachname"] usw.
Cyberjoac
@cyberjoac in diesem Fall ein Diktat verwenden. In der Ansicht: d = {'Vorname': 'foo', 'Nachname': 'bar'}. In der Vorlage funktioniert {{d.first_name}} einwandfrei.
Ofri Raviv
7

wenn Sie rendereine Anfrage an coctexteinige Informationen: zum Beispiel:

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

Sie können auf folgende Vorlage zugreifen: for variabels :

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

for array :

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

Sie können auch Array-Objekte benennen views.pyund zehn verwenden sie wie folgt:

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

Wenn es ein anderes Problem gibt, möchte ich Ihnen helfen

Omid reza
quelle