За замовчуванням, під час запуску програми Flask за допомогою вбудованого сервера ( Flask.run
), він відстежує свої файли Python і автоматично перезавантажує програму, якщо її код змінюється:
* Detected change in '/home/xion/hello-world/app.py', reloading
* Restarting with reloader
На жаль, це, здається, працює лише для файлів * .py , і я, здається, не знаходжу жодного способу поширити цю функціональність на інші файли. Найголовніше, було б надзвичайно корисно, щоб Flask перезапустив програму при зміні шаблону . Я втратив підрахунок того, скільки разів возився з розміткою в шаблонах і заплутувався, не бачачи змін, лише з’ясувавши, що програма все ще використовує стару версію шаблону Jinja.
Отже, чи є спосіб мати файли монітора Flask у каталозі шаблонів , або це вимагає занурення у джерело фреймворку?
Редагувати : я використовую Ubuntu 10.10. Ще не пробував цього на жодних інших платформах.
Після подальших досліджень, я виявив , що зміни в шаблонах дійсно будуть оновлені в режимі реального часу, без перезавантаження самої програми. Однак, схоже, це стосується лише тих шаблонів, які передаються flask.render_template
.
Але трапляється так, що в моєму додатку у мене є багато багаторазово використовуваних параметризованих компонентів, які я використовую в шаблонах Jinja. Вони реалізовані як {% macro %}
s, знаходяться у виділених "модулях" та {% import %}
редагуються у фактичні сторінки. Все приємно і СУХО ... за винятком того, що ці імпортовані шаблони, мабуть, ніколи не перевіряються на внесення змін, оскільки вони взагалі не проходять render_template
.
(Цікаво, що це не відбувається для шаблонів, що викликаються через {% extends %}
. Щодо {% include %}
, я не маю уявлення, оскільки я насправді їх не використовую.)
Отже, підсумовуючи, коріння цього явища, здається, лежить десь між Джинджею та Фляшкою чи Веркцогом. Думаю, це може вимагати поїздки до відстежувача помилок для будь-якого з цих проектів :) Тим часом я прийняв jd. відповідь, тому що це рішення, яке я насправді використовував - і воно працює як шарм.