Django: How can I identify the calling view from a template? -
संक्षिप्त संस्करण:
क्या कोई सरल, अंतर्निहित तरीके है
लांग (मूल) संस्करण:
मेरे एक Django एप्लिकेशन में से एक है कई Django टेम्पलेट में बुला दृश्य की पहचान करने के लिए अलग-अलग दृश्य, प्रत्येक स्वयं के नामित यूआरएल पैटर्न के साथ, सभी समान टेम्पलेट प्रस्तुत करते हैं। टेम्पलेट कोड की एक बहुत छोटी मात्रा है जिसे कॉल किए गए दृश्य के आधार पर बदलने की जरूरत है, प्रत्येक दृश्य के लिए अलग-अलग टेम्प्लेट सेट करने का ओवरहेड होना बहुत छोटा है, इसलिए आदर्श रूप से मुझे टेम्प्लेट में कॉलिंग व्यू को पहचानने के लिए एक रास्ता खोजने की आवश्यकता है ।
मैंने कॉलिंग व्यू को पहचानने के लिए अतिरिक्त संदर्भ चर (जैसे "दृश्य_नाम") में पास करने के लिए विचार सेट करने की कोशिश की है, और मैंने भी {% ifequal request.path का उपयोग करने की कोशिश की है "/ कुछ / पथ /"%} तुलना, लेकिन इन समाधानों में से कोई भी विशेष रूप से सुरुचिपूर्ण नहीं लगता है। क्या टेम्पलेट से कॉल करने वाले दृश्य की पहचान करने का कोई बेहतर तरीका है? क्या देखने के नाम या यूआरएल पैटर्न का नाम एक्सेस करने का कोई तरीका है?
अपडेट 1: इस टिप्पणी के बारे में कि यह बस मेरे मामले में है MVC गलतफहमी, मैं MVC समझता हूँ, लेकिन मेरा मानना है कि जिस तरह से मेरे ऐप की स्थापना की जाती है, वह डीजेंगो के एमवीसी के साथ संगत है: विचारों को जो डेटा प्रस्तुत किया गया है, और टेम्पलेट का वर्णन कैसे डेटा प्रस्तुत किया जाता है यह सिर्फ ऐसा होता है कि मेरे पास बहुत से विचार हैं जो अलग-अलग डेटा तैयार करते हैं, लेकिन ये सभी एक ही टेम्पलेट का उपयोग करते हैं क्योंकि डेटा को सभी दृश्यों के लिए एक ही तरीके से प्रस्तुत किया जाता है मैं बस टेम्पलेट से कॉलिंग व्यू को पहचानने का एक आसान तरीका तलाश रहा हूं, अगर यह मौजूद है।
अपडेट 2: सभी उत्तरों के लिए धन्यवाद मुझे लगता है कि प्रश्न को खत्म किया जा रहा है - जैसा कि मेरे मूल प्रश्न में बताया गया है, मैंने पहले से ही सभी सुझाव समाधानों पर विचार किया है और कोशिश की है - इसलिए मैंने इसे "संक्षिप्त संस्करण" में नीचे दिए गए हैं जो अब प्रश्न के शीर्ष पर है । और अभी ऐसा लगता है कि यदि कोई केवल "नहीं" पोस्ट कर रहा था, तो यह सबसे सही जवाब होगा:)
अपडेट 3: कार्ल मेयर ने "नहीं" पोस्ट किया है: ) फिर से धन्यवाद, हर कोई।
नहीं, और यह एक बुरा विचार होगा। टेम्प्लेट से दृश्य फ़ंक्शन के नाम को सीधे संदर्भित करने के लिए दृश्य परत और टेम्पलेट परत के बीच अधिकाधिक तंग युग्मन का परिचय।
यहां एक बेहतर समाधान है Django's template inheriting system। एक सामान्य अभिभावक टेम्पलेट को परिभाषित करें, (छोटा) क्षेत्र के लिए एक ब्लॉक के साथ जो प्रत्येक दृश्य के संस्करण में बदलने की आवश्यकता होती है। फिर प्रत्येक दृश्य के टेम्पलेट को अभिभावक से विस्तारित करने के लिए परिभाषित करें और उस ब्लॉक को उचित रूप से परिभाषित करें।
Comments
Post a Comment