По умолчанию при запуске приложения 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 %}
, я понятия не имею, поскольку я их действительно не использую.)
Итак, чтобы обернуть, корни этого явления, кажется, лежат где-то между Jinja и Flask или Werkzeug. Думаю, это может послужить поводом для отслеживания ошибок в любом из этих проектов. Между тем, я принял jd. ответ, потому что это решение, которое я фактически использовал, и оно работает как шарм.