कैसे एक Django टेम्पलेट में सरणी तत्वों का उपयोग करने के लिए?


166

मैं arrअपने Django टेम्पलेट के लिए एक सरणी पास कर रहा हूं। मैं पूरे सरणी के माध्यम से लूप करने के बजाय सरणी (जैसे arr[0], arr[1]) आदि में व्यक्तिगत तत्वों का उपयोग करना चाहता हूं ।

वहाँ एक Django टेम्पलेट में ऐसा करने का एक तरीका है?


3
आप इस तरह आइटम का उपयोग कर सकते arr.0, arr.1... एक अन्य समाधान: अपने स्वयं के टेम्पलेट टैग लिखने arr|array_item: "0" या कुछ इस तरह।
राफोनिका

1
@rphonika हाँ, यहाँ उदाहरण: stackoverflow.com/a/29664945/2714931
WeizhongTu

जवाबों:


303

याद रखें कि Django टेम्पलेट में डॉट नोटेशन का उपयोग पायथन में चार अलग-अलग नोटेशन के लिए किया जाता है। किसी टेम्पलेट में, foo.barइसका कोई मतलब हो सकता है:

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

यह इस क्रम में उन्हें कोशिश करता है जब तक कि वह एक मैच नहीं पाता। तो foo.3आप अपनी सूची सूचकांक प्राप्त करेंगे क्योंकि आपकी वस्तु 3 के साथ एक कुंजी के रूप में एक तानाशाह नहीं है, जिसमें 3 नाम की विशेषता नहीं है, और 3 के लिए एक विधि नहीं है।


3
पहले और पिछले अधिक पसंद नहीं कर रहे हैं foo['bar']?
बॉब स्टीन

2
एक चर सूचकांक का उपयोग करके किसी सूची आइटम तक पहुंचने का कोई तरीका नहीं लगता है :(
विकी चिजवानी

@VickyChijwani से सहमत: ऊपर दिया गया चौथा विकल्प मान्य नहीं है। Django टेम्प्लेट चर के साथ सूची-सूचकांक लुकअप करने के लिए प्रतीत नहीं होता है
ehacinom

@ अहिउ कैसे दूर हो?
सेसाबा तोथ

मुझे समझ नहीं आ रहा है कि मैं आधिकारिक दस्तावेज में ऐसा नहीं पाया। क्या आप उस पोस्ट के लिए कोई स्रोत प्रदान कर सकते हैं? मैं भी चकित हूं कि वर्तमान में यह कैसे स्वीकार किया जाता है।
कासज़ानास

148
arr.0
arr.1

आदि।


10
कैसे पूर्व की तरह गतिशील मुद्रित करने के लिए: arr.variablename
कुमार 12

क्या जादू की संख्याओं के बिना ऐसा करने का कोई तरीका है? दूसरे शब्दों में "नाम" .0.1 .2 आदि ...? जैसे कि सरणी ["पहला नाम"], सरणी ["अंतिम नाम" आदि आदि ..
सायबरजोइक

उस मामले में @cyberjoac एक तानाशाही का उपयोग करते हैं। दृश्य में: d = {'first_name': 'foo', 'last_name': 'bar'}। टेम्पलेट {{d.first_name}} में ठीक काम करेगा।
अत्रि रवि


7

जब आप कुछ जानकारी के लिए renderअनुरोध coctextकरते हैं: परीक्षा के लिए:

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

आप इसे इस तरह से टेम्पलेट पर ले सकते हैं: for variabels :

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

for array :

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

आप सरणी वस्तुओं को भी नाम दे सकते हैं views.pyऔर दस इसका उपयोग कर सकते हैं जैसे:

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

अगर कोई और समस्या है तो मैं आपकी मदद करना चाहता हूँ

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