По умолчанию при запуске приложения Flask с использованием встроенного сервера ( Flask.run
) оно отслеживает свои файлы Python и автоматически перезагружает приложение, если оно изменения кода:
* Detected change in '/home/xion/hello-world/app.py', reloading
* Restarting with reloader
К сожалению, похоже, что это работает только для файлов * .py , и я, похоже, не нахожу никакого способа распространить эту функциональность на другие файлы. В частности, было бы чрезвычайно полезно, чтобы Flask перезапускал приложение при изменении шаблона . Я потерял счет, сколько раз возился с разметкой в шаблонах и сбивался с толку, не замечая никаких изменений, только чтобы узнать, что приложение все еще использует старую версию шаблона Jinja.
Итак, есть ли способ разместить файлы монитора Flask в каталоге templates , или для этого потребуется погрузиться в исходный код фреймворка?
Изменить : Я использую Ubuntu 10.10. На самом деле я не пробовал это ни на каких других платформах.
После дальнейшего расследования я обнаружил, что изменения в шаблонах действительно обновляются в реальном времени, без перезагрузки самого приложения. Однако, похоже, это применимо только к тем шаблонам, которые передаются в flask.render_template
.
Но так случилось, что в моем приложении довольно много параметризованных многократно используемых компонентов, которые я использую в шаблонах Jinja.Они реализованы как {% macro%}
s, находятся в выделенных «модулях» и {% import%}
включены в реальные страницы. Все красиво и СУХОЙ ... за исключением того, что эти импортированные шаблоны, по-видимому, никогда не проверяются на предмет модификаций, поскольку они вообще не проходят через render_template
.
(Любопытно, что этого не происходит для шаблонов, вызываемых через {% extends%}
. Что касается {% include%}
, я понятия не имею, поскольку я не действительно используйте их.)
Итак, корни этого явления, кажется, лежат где-то между Jinja и Flask или Werkzeug. Я полагаю, это может потребовать посещения системы отслеживания ошибок для любого из этих проектов :) Тем временем я принял jd. , потому что это решение, которое я действительно использовал - и оно работает как шарм.