2010-08-05 13 views
17

मैं jinja2 के लिए बहुत नया हूं और सामान्य रूप से टेम्पलेट्स का उपयोग इसलिए मैं सोच रहा था कि बाहरी जावास्क्रिप्ट को लोड करने का कोई आसान तरीका है या नहीं। मैं का उपयोग करने का सोच रहा था:jinja2 टेम्पलेट निर्देश के साथ बाहरी स्क्रिप्ट लोड हो रहा है

{% block javascript %} 
    <SCRIPT SRC="myscript.js"></SCRIPT> 
{% endblock %} 

लेकिन मैं मदद नहीं कर सकता पूछने के लिए:

वहाँ लोड हो रहा है का एक तरीका यह स्क्रिप्ट एक टेम्पलेट के निर्देश के अंदर से सीधे है?

उत्तर

28

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

दूसरा तरीका Jinja2 के include समारोह का उपयोग करने के लिए है:

{% block javascript %} 
    <script type="text/javascript"> 
     {% include "myscript.js" %} 
    </script> 
    <!-- The contents of myscript.js will be loaded inside the script tag --> 
{% endblock %} 

include का उपयोग करने का लाभ यह है कि Jinja2 यह शामिल करने से पहले अपने जावास्क्रिप्ट पर कार्रवाई करेंगे है - जिसका अर्थ है आप अपने जावास्क्रिप्ट में चर हो सकता है अपने कार्यक्रम की स्थिति के आधार पर बदलें।

इस तरह से include का उपयोग करने का नुकसान ही है - अपने .js फ़ाइल बाहर भेजे जाने से पहले Jinja2 के माध्यम से चलाया जाएगा - आप गतिशील सामग्री तुम सिर्फ हर अनुरोध के लिए फ़ाइल को संसाधित किया जाएगा अनावश्यक रूप से उपयोग नहीं कर रहे हैं - - और यदि आप Jinja2 वाक्यविन्यास के साथ एक जावास्क्रिप्ट टेम्पलेटिंग लाइब्रेरी का उपयोग कर रहे हैं तो समस्या की संभावना है।

+0

तो यह मूल रूप से उन टैग्स के बीच फ़ाइल myscript.js के अंदर सब कुछ शामिल करेगा, मैं सही हूँ? किसी भी कारण से मैं टेक्स्ट फ़ाइल या कुछ और शामिल करने के लिए इसका उपयोग नहीं कर सका? – kirbuchi

+0

@kirbuchi - हाँ, बिल्कुल। वही व्यापार-बंद लागू होते हैं। –

+0

अच्छा! बहुत बहुत धन्यवाद – kirbuchi

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