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?


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.


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.


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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.