2010-08-10 19 views
7

मुझे एक टैग मिला है जो इस तरह दिखता है:एक टेम्पलेट टैग कैसे फ़िल्टर करें?

{% partial "partials/vehicleform.html" vehicle=vehicles.empty_form %} 

जो सिर्फ खाली फॉर्म प्रस्तुत करता है। लेकिन अब मैं उस आउटपुट को escapejs फ़िल्टर में पास करना चाहता हूं ताकि मैं इसे जावास्क्रिप्ट चर में उपयोग कर सकूं। मैं उसे कैसे कर सकता हूँ?

उत्तर

14

कई टैग as variablename का समर्थन करते हैं - यानी टैग के अंत में as variablename को सरल रखें और फिर उस टैग का आउटपुट प्रदर्शित होने के बजाय चर में रखा गया है।

यह {% partial %} टैग इसका समर्थन कर सकता है। यहाँ एक उदाहरण है, अगर यह होता है:

{% partial "partials/vehicleform.html" vehicle=vehicles.empty_form as myvar %}{{ myvar|escapejs }} 

तो सवाल में टैग "Partial tag" snippet तो ऐसा लगता है कि यह इस का समर्थन नहीं करता है। लेकिन शायद इसे समर्थन देने के लिए इसे फिर से लिखा जा सकता है।

आप "Capture template output as a variable" टुकड़ा इस्तेमाल कर सकते हैं, और उसके बाद तो जैसे, पर कब्जा कर लिया सामग्री के लिए फ़िल्टर लागू:

{% captureas myvar %}{% partial "partials/vehicleform.html" vehicle=vehicles.empty_form %}{% endcaptureas %}{{ myvar|escapejs }} 
+0

यह आंशिक टैग स्निपेट का एक संशोधित संस्करण है जो परिवर्तनीय नामकरण का समर्थन करता है। http://djangosnippets.org/snippets/2104/ मुझे लगता है कि 'कैप्चर' सोलन काम नहीं करना चाहिए। कस्टम टैग कैप्चर के लिए – mpen

+0

+1 –

1

एक अन्य समाधान एक जे एस चर में डेटा प्राप्त करने के लिए:

<div class="display:none" id="empty-vehicle-form">{% partial "partials/vehicleform.html" vehicle=vehicles.empty_form %}</div> 

तो यह पकड़ने और इस solutio की

var empty_form = $('#empty-vehicle-form').remove().html(); 

लाभ एक ही समय में इसे हटाने n यह है कि आपकी अन्य जेएस स्क्रिप्ट इसे डीओएम से बाहर निकालने से पहले प्रीप्रोसेस कर सकती हैं। escapejs उन सभी भागने वाले वर्णों के साथ बड़ी फाइलें भी बनाता है।

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