Pytanie Element listy referencyjnej według indeksu w szablonie Django?


Może to być proste, ale rozejrzałem się i nie mogłem znaleźć odpowiedzi. Jaki jest najlepszy sposób odniesienia do pojedynczego przedmiotu na liście z szablonu Django?

Innymi słowy, jak zrobić ekwiwalent {{ data[0] }} w języku szablonów?

Dzięki.


76
2018-01-10 20:27


pochodzenie




Odpowiedzi:


To wygląda jak {{ data.0 }}. Widzieć Zmienne i wyszukiwania.


125
2018-01-10 20:29



Po prostu to znalazłem. Tak, jest dozwolone i działa. Dzięki! - user456584
Denerwujące jest to, że nie mogę powiedzieć {{ data.foo }}, gdzie foo jest zmienną o wartości indeksu, a nie nazwą właściwości. - Mike DeSimone
@MikeDeSimone zobacz moją odpowiedź stackoverflow.com/a/29664945/2714931 - WeizhongTu
Jeśli chcesz utworzyć niestandardowy tag, możesz zrobić o wiele więcej. Tutaj pracujemy z wbudowanymi materiałami. - Mike DeSimone
Link już nie działa, spróbuj tego: docs.djangoproject.com/en/1.10/ref/templates/api/... - Speccy


Lepszy sposób: niestandardowy filtr szablonów: https://docs.djangoproject.com/en/dev/howto/custom-template-tags/

takie jak Pobierz listę [x] w szablonach:

w szablonie

{% load index %}
{{ List|index:x }}

templatetags / index.py

from django import template
register = template.Library()

@register.filter
def index(List, i):
    return List[int(i)]

gdyby List = [['a','b','c'], ['d','e','f']], możesz użyć {{ List|index:x|index:y }} w szablonie, aby uzyskać List[x][y]

Działa dobrze z "dla"

{{ List|index:forloop.counter0 }}

Testowane i działa dobrze ^ _ ^


39
2018-04-16 03:41



Jedno z najprostszych wyjaśnień do nauki aplikacji Template Tags! - vanguard69
To było świetne! Ale w formacie {{List | index: x}}, w jaki sposób uzyskać dostęp do wartości, w których normalnie użyłbym kropki? {{(Lista | index: x) .name}} oczywiście nie działa. Dziękuję Ci! - JTFouquier
Dokładnie to, czego szukałem. Dziękuję Ci! - grantathon


{{ data.0 }} powinno działać.

Powiedzmy, że napisałeś data.obj django próbuje data.obj i data.obj(). Jeśli nie działają, próbuje data["obj"]. W Twoim przypadku data[0] można zapisać jako {{ data.0 }}. Ale polecam ci ciągnąć data[0] w widoku i wyślij go jako oddzielną zmienną.


21
2018-01-10 20:33





@ jennifer06262016, można zdecydowanie dodać inny filtr, aby zwrócić obiekty wewnątrz kwerendy django.

@register.filter 
def get_item(Queryset):
    return Queryset.your_item_key

W takim przypadku możesz wpisać coś takiego {{Queryset | index: x | get_item}} do swojego szablonu, aby uzyskać dostęp do jakiegoś obiektu słownika. Mi to pasuje.


1
2018-04-15 07:23