2011-12-19 16 views
5

हाल ही में एक दोस्त और डेवलपर का सम्मान मैंने सलाह दी है कि मैं django टेम्पलेट्स में 'शामिल' का उपयोग करने से बचता हूं। उनके तर्क का योग था कि 'बुराई' शामिल हैं।Django शामिल है - क्या वे बुराई हैं?

मुझे तर्क समझने में परेशानी हो रही है; मेरी नौसिखिया राय यह है कि वे पुन: प्रयोज्य एचटीएमएल के हिस्सों को व्यवस्थित करने का एक शानदार तरीका हैं, और कई स्थानों में एचटीएमएल को संपादित करने के बजाय मैं इसे एक में संपादित कर सकता हूं जब परिवर्तन किए जाने चाहिए।

आप सभी प्रतिभा क्या सोचते हैं? कृपया कुछ प्रो और कॉन का उपयोग करने के लिए Django टेम्पलेट्स

+0

यदि किसी के तर्क का योग 'यह बुरा है' तो यह तर्क नहीं है! यह डेवलपर्स के रूप में सच है क्योंकि यह धार्मिक लोगों के लिए है :) – Spacedman

उत्तर

9

में थोड़ा अजीब राय दिखाई देती है। इसमें टेम्पलेट भाषा का एक पूर्ण रूप से मान्य हिस्सा शामिल है, इसलिए 1 दिन से ऐसा रहा है और कभी AFAIK के खिलाफ अनुशंसा या अनुमोदित नहीं किया गया है।

आपका मित्र यह कहने का प्रयास कर रहा है कि आपको टेम्पलेट विरासत पर अधिक भरोसा करना चाहिए (जो कि विपरीत विपरीत है)। यह तब तक सही है जब तक यह जाता है - अधिकांश समय उन ब्लॉकों के अपने टेम्पलेट्स को लिखना बेहतर होता है जो पैरेंट टेम्पलेट्स में परिभाषित लोगों को ओवरराइड या विस्तारित करते हैं। लेकिन इसमें निश्चित रूप से उपयोग के लिए एक केस-केस भी है।

एकमात्र अन्य कारण वह कह सकता है कि लोडिंग के अतिरिक्त फाइल सिस्टम हिट के कारण डिस्क से टेम्पलेट्स शामिल हैं। इस मामले में, वह निश्चित रूप से निशान से बाहर है - फिर से, टेम्पलेट विरासत मॉडल जो निश्चित रूप से अनुशंसित एक ही हिट होगा; और दोनों वैकल्पिक कैशिंग फाइल सिस्टम लोडर का उपयोग करके टाला जा सकता है।

3

जैसा कि डैनियल द्वारा उल्लेख किया गया है, इसमें उल्लेख किए गए कारणों के लिए पूरी तरह मान्य हैं। जैसे प्रो और कॉन देना मुश्किल है क्योंकि यह वास्तव में उस पर निर्भर करता है जिसे आप पूरा करने की कोशिश कर रहे हैं।

आम तौर पर आधार टेम्पलेट में ब्लॉक टैग के अंदर वेबसाइट के सामान्य तत्वों को परिभाषित करना और प्रत्येक पृष्ठ पर आवश्यक भागों को बदलने के लिए टेम्पलेट विरासत का उपयोग करना सबसे अच्छा है। हालांकि, अगर आपको बस कई स्थानों पर टेक्स्ट का एक स्निपेट पुनः उपयोग करने की आवश्यकता है, तो 'शामिल' सही होगा।

ध्यान देने योग्य एक महत्वपूर्ण बिंदु यह है कि इसमें ब्लॉक टैग शामिल नहीं हो सकते हैं क्योंकि वे मूल पृष्ठ के किसी भी ज्ञान के बिना स्वयं द्वारा प्रस्तुत किए जाते हैं। इसे बेहतर ढंग से समझने के लिए template docs on includes या यह (गैर-बग) bug report से नोट देखें। यदि आपको स्वयं को इस कार्यक्षमता की आवश्यकता है, तो यह विचार करने योग्य हो सकता है कि क्या आपको शामिल फ़ाइल को ब्लॉक टैग के अंदर बेस टेम्पलेट में स्थानांतरित करना चाहिए।

2

वह कह सकता है कि आप कस्टम टैग लिखना बेहतर होगा। तो बजाय होने का:

{% for post in blog %} 
{% include "blog.tmpl" %} 
{% endfor %} 

आपको क्या करना चाहिए:

{% for post in blog %} 
{% formatPost post %} 
{% endfor %} 

को शामिल विधि ब्लॉग पोस्टिंग एक वस्तु 'पोस्ट' कहा जाता है में किया जा रहा पर निर्भर करता है, जबकि कस्टम टैग विधि आप कुछ भी स्वरूपित करने देता है। उदाहरण के लिए यदि आप एक पृष्ठ है कि दो ब्लॉग पोस्ट की तुलना में था, तो आप उन्हें संदर्भ में 'post1' और 'post2' के रूप में के रूप में भेजने के लिए और करना होगा:

<h1>John Said</h1> 
    {% formatPost post1 %} 
    <h1>And Fred Said</h1> 
    {% formatPost post2 %} 

बहुत अधिक पुन: प्रयोज्य। साथ ही आपको पोस्ट 1 और पोस्ट 2 को 'पोस्ट' के रूप में नामित करना होगा और फिर टेम्पलेट शामिल करना होगा ...

संबंधित मुद्दे