मेरे पास लिखे गए कुछ दर्जन कस्टम फ़िल्टर के साथ एक jinja_filters.py फ़ाइल है। अब मेरे पास एकाधिक फ्लास्क ऐप्स हैं जिन्हें इन फ़िल्टरों का उपयोग करने की आवश्यकता है। (मुझे यकीन है कि अगर मेरी समस्या बोतल विशेष या नहीं है नहीं कर रहा हूँ।)किसी अन्य फ़ाइल से कस्टम jinja2 फ़िल्टर कैसे आयात करें (और फ्लास्क का उपयोग करके)?
पूरा करने के लिए जो मैं चाहताएक hacky तरीके से करना है:
app = Flask(__name__)
import jinja_filters
@app.template_filter('filter_name1')
def filter_name1(arg):
return jinja_filters.filter_name1(arg)
@app.template_filter('filter_name2')
def filter_name2(arg):
return jinja_filters.filter_name2(arg)
...
"सही" तरीका यह है क्या है?
संपादित करें: आदर्श रूप से, मुझे प्रत्येक फ़िल्टर नाम सूचीबद्ध नहीं करना होगा। तो जब मैं jinja_filters.py में एक नया फ़िल्टर जोड़ता हूं तो मुझे किसी अन्य कोड को अपडेट करने की आवश्यकता नहीं है - मेरे सभी ऐप्स तुरंत इसका उपयोग करने में सक्षम होंगे।
यह मेरे पास जो कुछ है उससे निश्चित रूप से बेहतर है। लेकिन क्या कोई तरीका है कि मुझे स्पष्ट रूप से प्रत्येक फ़िल्टर नाम की सूची नहीं है? –
मैंने अपने उत्तर को एक और समाधान के साथ अपडेट किया जो 'इंस्पेक्ट 'मॉड्यूल का उपयोग करके फ़िल्टर को गतिशील रूप से जोड़ सकता है। – aezell
ठीक है, यह काम ठीक से हो जाता है :) लेकिन मैं अभी भी विश्वास नहीं कर सकता कि जिनजा 2/फ्लास्क के लेखकों के पास ऐसा करने का एक और संक्षिप्त तरीका नहीं था। (यदि कोई और कोई झुकता है तो मैं आपके उत्तर को दो दिनों में चेकमार्क कर दूंगा।) –