mako docs about filtering के अनुसार, आप डिफ़ॉल्ट फिल्टर जब एक नया Template
के साथ-साथ बनाने TemplateLookup
के लिए (इस स्थिति में यह सब टेम्पलेट्स कि यह लग रहा है के लिए डिफ़ॉल्ट रूप से लागू होता है) कि टेम्पलेट्स के अंदर लागू होते हैं सेट कर सकते हैं default_filters
तर्क के साथ।
# Create the Mako TemplateLookup, with the default auto-escaping
config['pylons.app_globals'].mako_lookup = TemplateLookup(
directories=paths['templates'],
error_handler=handle_mako_error,
module_directory=os.path.join(app_conf['cache_dir'], 'templates'),
input_encoding='utf-8', default_filters=['escape'],
imports=['from webhelpers.html import escape'])
यह वह जगह है तुम क्यों डिफ़ॉल्ट रूप से बचने के लिए (जो मामला नहीं है जब आप खुद ही मैको का उपयोग करें:
Pylons config/environment.py
फाइल के अंदर अपनी परियोजना के लिए डिफ़ॉल्ट सेट करने TemplateLookup
के साथ इस तर्क का उपयोग करता है)। तो आप या तो कॉन्फ़िगरेशन फ़ाइल में इसे वैश्विक रूप से बदल सकते हैं, या मानक लुकअप पर भरोसा नहीं कर सकते हैं। सावधान रहें कि आपको निश्चित रूप से उन चीजों से बचने के लिए स्पष्ट रूप से फ़िल्टर का उपयोग करना चाहिए, जो भागने की आवश्यकता है।
तुम भी एक स्ट्रिंग Pylons सहायक h.literal
के साथ "के रूप में सुरक्षित के रूप में चिह्नित" पारित कर सकते हैं, उदाहरण के लिए यदि आप h.literal('This will <b>not</b> be escaped')
टेम्पलेट को मिलेगा, इसलिये spam
नामक एक चर के रूप में कहते हैं, आप बस किसी भी एस्केपिंग बिना ${spam}
इस्तेमाल कर सकते हैं।
यदि आप एक टेम्पलेट के अंदर से एक निश्चित फ़ंक्शन को कॉल करते समय एक ही प्रभाव चाहते हैं, तो इस फ़ंक्शन को ऐसे शाब्दिक को वापस करने की आवश्यकता होगी, या उस फ़ंक्शन के लिए एक सहायक प्रदान करना होगा जो परिणाम पर h.literal
पर कॉल करता है यदि आप छोड़ना चाहते हैं अकेले मूल कार्य। (या मुझे लगता है कि आप इसे "फ़िल्टरिंग डीफ़" के माध्यम से भी कॉल कर सकते हैं (उपरोक्त के समान मको दस्तावेज़ देखें), अभी तक इसका प्रयोग नहीं किया है)
इसे "कक्षा" में जाना है जिसे 'h.some_function_that_outputs_html()' द्वारा माना जाता है। – Felix