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