में वैश्विक डेटा और फ़ंक्शंस का खुलासा करते हुए मेरे पास एक लॉग टेम्पलेट है जब उपयोगकर्ता लॉग इन होता है, और उस बेस टेम्पलेट पर, मुझे ड्रॉप डाउन मेनू में उपयोगकर्ता विशिष्ट विकल्प जोड़ने की आवश्यकता होती है। विकल्पों के साथ यह ड्रॉप डाउन मेनू सभी हैंडलरों में निरंतर होना चाहिए, यानी, किसी भी समय बेस टेम्पलेट को बच्चे टेम्पलेट के साथ (विस्तारित) लगाया जाना चाहिए।पिरामिड और जिनजा 2 टेम्पलेटिंग
आवश्यक डीबी क्वेरी करने के अलावा, क्वेरी परिणामों को एक चर के लिए असाइन करना, और उस हैंडल को प्रत्येक हैंडलर में पास करना (कई हैं), मैं इसे एक क्वेरी और एक चर में कैसे समेकित कर सकता हूं, जो सीधे पास हो जाता है आधार टेम्पलेट? मैं jinja2
टेम्पलेट्स का भी उपयोग कर रहा हूं।
मुझे कुछ और अधिक सरल और रखरखाव के बदले में इतना बोझिल करने से नफरत होगी।
कोई विचार? धन्यवाद।
संपादित
तो मैं अभी भी नहीं मिला है कुछ भी है कि है बिल्कुल मैं के लिए क्या देख रहा हूँ; हालांकि, मैंने कम से कम अंतरिम में कुछ रास्ता बनाने का फैसला किया। इसलिए, मैंने एक कस्टम सजावट की है जो एक दृश्य वापस लौटा() लेता है और उचित डेटा जोड़ता है। उदाहरण के लिए:
def get_base_data(func):
def wrapper(request):
d = func(request)
user_id = request.user.id # used in query
contact_group_data = ContactGroups.query.filter(...criteria...).all()
d['contact_group_data'] = contact_group_data
return d
return wrapper
अब, मैं कम से कम प्रत्येक विधि बहुत संक्षेप में और बस डाल कर सजाने कर सकते हैं:
@view_config(...)
@get_base_data
def my_handler(request):
pass # rest of code...
यह बहुत अच्छा है, मैं वास्तव में इस पर सहायता की सराहना करता हूं। मैं मानता हूं, वर्ग आधारित विचार दृष्टिकोण अधिक सुरुचिपूर्ण प्रतीत होता है। – JohnZ