डिफ़ॉल्ट रूप से, जब अंतर्निहित सर्वर ( Flask.run
) का उपयोग करके फ्लास्क एप्लिकेशन को चलाया जाता है, तो यह अपनी पायथन फ़ाइलों की निगरानी करता है और यदि कोड बदलता है तो स्वचालित रूप से ऐप को फिर से लोड करता है:
* Detected change in '/home/xion/hello-world/app.py', reloading
* Restarting with reloader
दुर्भाग्य से, यह केवल .py फ़ाइलों के लिए काम करने लगता है , और मुझे इस कार्यक्षमता को अन्य फ़ाइलों तक विस्तारित करने का कोई तरीका नहीं मिल रहा है। खासतौर पर, टेम्प्लेट में बदलाव होने पर फ्लास्क को फिर से शुरू करना बेहद उपयोगी होगा । मैंने इस बात पर भरोसा किया है कि मैं कितनी बार टेम्प्लेट में मार्कअप कर रहा था और किसी भी बदलाव को नहीं देखकर भ्रमित हो रहा था, केवल यह पता लगाने के लिए कि ऐप अभी भी जिन्जा टेम्पलेट के पुराने संस्करण का उपयोग कर रहा था।
तो, क्या फ्लास्क मॉनिटर फाइल को टेम्प्लेट डायरेक्टरी में रखने का एक तरीका है , या क्या इसे फ्रेमवर्क के स्रोत में डाइविंग की आवश्यकता है?
संपादित करें : मैं Ubuntu 10.10 का उपयोग कर रहा हूं। वास्तव में किसी भी अन्य प्लेटफार्मों पर कोशिश नहीं की है।
आगे की पूछताछ के बाद, मुझे पता चला है कि वास्तव में ऐप को फिर से लोड किए बिना, टेम्प्लेट में परिवर्तन वास्तव में अपडेट किए जाते हैं । हालाँकि, यह केवल उन टेम्प्लेट पर लागू होता है जो पास किए गए हैं flask.render_template
।
लेकिन ऐसा होता है कि मेरे ऐप में, मेरे पास काफी पुन: प्रयोज्य, पैरामीट्रिज्ड घटक हैं जो मैं जिनजा टेम्प्लेट में उपयोग करता हूं। उन्हें {% macro %}
एस के रूप में लागू किया जाता है , समर्पित "मॉड्यूल" में रहते हैं और {% import %}
वास्तविक पृष्ठों में एड होते हैं । सभी अच्छे और DRY ... सिवाय इसके कि उन आयातित टेम्पलेट्स को स्पष्ट रूप से संशोधनों के लिए कभी नहीं जांचा जाता है, क्योंकि वे बिल्कुल भी नहीं गुजरते हैं render_template
।
(उत्सुकता से, यह उन टेम्प्लेटों के लिए नहीं होता है , जो मेरे द्वारा उपयोग किए गए टेम्पलेट्स के लिए हैं {% extends %}
। {% include %}
मेरे पास कोई विचार नहीं है क्योंकि मैं वास्तव में उनका उपयोग नहीं करता हूं।)
तो लपेटने के लिए, इस घटना की जड़ें जिंजा और फ्लास्क या वर्केज़ग के बीच कहीं झूठ लगती हैं। मुझे लगता है कि यह उन परियोजनाओं में से किसी के लिए बग ट्रैकर के लिए एक यात्रा वारंट कर सकता है :) इस बीच, मैंने जेड को स्वीकार कर लिया है । क्योंकि मैं वास्तव में इस्तेमाल किया समाधान है - जवाब है और यह एक आकर्षण की तरह काम करता है।