Django टेम्पलेट के अंतर्गत इंडेक्स द्वारा संदर्भ सूची आइटम?


107

यह सरल हो सकता है, लेकिन मैंने चारों ओर देखा और एक उत्तर नहीं मिला। एक Django टेम्पलेट से एक सूची में किसी एकल आइटम को संदर्भित करने का सबसे अच्छा तरीका क्या है?

दूसरे शब्दों में, मैं {{ data[0] }}टेम्प्लेट भाषा के भीतर समान कैसे कर सकता हूं ?

धन्यवाद।

जवाबों:


184

ऐसा लग रहा है {{ data.0 }}चर और लुकअप देखें ।


47
कष्टप्रद बात यह है कि मैं नहीं कह सकता है {{ data.foo }}, जहां fooउस में एक सूचकांक मूल्य और एक प्रॉपर्टी का नाम नहीं के साथ एक चर रहा है।
माइक डीसिमोन

1
यदि आप एक कस्टम टैग बनाने के इच्छुक हैं, तो आप बहुत कुछ कर सकते हैं। यहाँ हम केवल निर्मित सामान के साथ काम कर रहे हैं।
माइक डेनिमोन

: लिंक अब और काम नहीं कर रहा, यह एक कोशिश docs.djangoproject.com/en/1.10/ref/templates/api/...
Speccy

76

एक बेहतर तरीका: कस्टम टेम्पलेट फ़िल्टर: 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]

यह "के लिए" के साथ ठीक काम करता है

{{ my_list|index:forloop.counter0 }}

परीक्षण और अच्छी तरह से काम करता है ^ _ ^


1
टेम्प्लेट टैग 'एप्लिकेशन को जानने के लिए सबसे सरल स्पष्टीकरणों में से एक!
vanguard69

5
यह बहुत अच्छा था! लेकिन {{सूची | सूचकांक: x}} प्रारूप के साथ, मैं उन मूल्यों का उपयोग कैसे कर सकता हूं जहां मैं सामान्य रूप से एक डॉट का उपयोग करूंगा? {{(सूची | अनुक्रमणिका: x) .name}} स्पष्ट रूप से काम नहीं करता है। धन्यवाद!
JTFouquier

ठीक वही जो मेरे द्वारा खोजा जा रहा था। धन्यवाद!
बार्टेल

मेरे पास एक सरणी है जिसमें मैं अपने वांछित मूल्य के सूचकांक के बारे में सुनिश्चित नहीं हूं{% for id in article_details.heading.contents.article_ids %} {% if id.type == 'DOI' %} {{ article_details.heading.contents.article_ids.forloop.counter0.value }} {% endif %} {% endfor %}
अकिन ह्वेन

मैं एक सूची (माचिस) को पुनरावृत्त कर रहा हूं, जबकि मेरे पास एक और सूची है, जहां मैं सूचकांक (काउंटर 0) का उपयोग करना चाहता हूं, मैंने {{matchTeamEmblems.forloop.counter0.homeTeamt "} की कोशिश की, लेकिन यह काम नहीं करता है, matchTeamEmblems एक सूची है। मैं simple_tag में उत्पन्न करता हूं जो मेरे प्रतीक के लिए एक URL (स्थिर ..) बनाता है लेकिन मैं उन्हें एक्सेस नहीं कर सकता
kaya

24

{{ data.0 }} कार्य करना चाहिए।

चलो कहते हैं कि तुम लिखा data.objDjango की कोशिश करता data.objहै और data.obj()। अगर वे काम नहीं करते हैं तो यह कोशिश करता है data["obj"]। अपने मामले में के data[0]रूप में लिखा जा सकता है {{ data.0 }}। लेकिन मैं आपको data[0]दृश्य में खींचने और इसे अलग-अलग चर के रूप में भेजने की सलाह देता हूं ।


1

@ jennifer06262016, आप निश्चित रूप से एक django क्वेरीसेट के अंदर वस्तुओं को वापस करने के लिए एक और फ़िल्टर जोड़ सकते हैं।

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

उस मामले में, आप कुछ इस तरह {{Queryset | index: x | get_item}} अपने टेम्पलेट में कुछ शब्दकोश वस्तु तक पहुँचने के लिए टाइप करेंगे। इससे मेरा काम बनता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.