[python] Django 템플릿 내에서 인덱스로 목록 항목을 참조합니까?

이것은 간단 할 수 있지만 주위를 둘러 보았지만 답을 찾을 수 없었습니다. Django 템플릿의 목록에서 단일 항목을 참조하는 가장 좋은 방법은 무엇입니까?

{{ data[0] }}, 템플릿 언어 내에서 해당 작업을 어떻게 수행 합니까?

감사.



답변

처럼 보입니다 {{ data.0 }}. 변수 및 조회를 참조하십시오 .


답변

더 나은 방법 : 커스텀 템플릿 필터 : https://docs.djangoproject.com/en/dev/howto/custom-template-tags/

예를 들어 템플릿에서 my_list [x] 가져 오기 :

템플릿에서

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

templatetags / index.py

from django import template
register = template.Library()

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

경우에 my_list = [['a','b','c'], ['d','e','f']], 당신은 사용할 수 있습니다 {{ my_list|index:x|index:y }}얻을 템플릿my_list[x][y]

“for”와 잘 작동합니다.

{{ my_list|index:forloop.counter0 }}

테스트를 거쳐 잘 작동합니다 ^ _ ^


답변

{{ data.0 }} 작동해야합니다.

하자가 당신이 쓴 말 data.obj장고 시도를 data.obj하고 data.obj(). 작동하지 않으면 시도합니다 data["obj"]. 귀하의 경우에는 data[0]같이 쓸 수있다 {{ data.0 }}. 하지만 data[0]보기 를 가져 와서 별도의 변수로 보내는 것이 좋습니다 .


답변

@ jennifer06262016, django Queryset 내부의 개체를 반환하기 위해 다른 필터를 확실히 추가 할 수 있습니다.

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

이 경우 템플릿에 {{Queryset | index : x | get_item}}과 같은 것을 입력하여 사전 개체에 액세스합니다. 그것은 나를 위해 작동합니다.


답변