De forma predeterminada, cuando se ejecuta la aplicación Flask usando el servidor integrado ( Flask.run
), monitorea sus archivos Python y recarga automáticamente la aplicación si cambia su código:
* Detected change in '/home/xion/hello-world/app.py', reloading
* Restarting with reloader
Desafortunadamente, esto parece funcionar solo para archivos * .py , y no parece encontrar ninguna forma de extender esta funcionalidad a otros archivos. En particular, sería extremadamente útil que Flask reiniciara la aplicación cuando cambia una plantilla . Perdí la cuenta de cuántas veces estaba jugando con el marcado en las plantillas y me confundía al no ver ningún cambio, solo para descubrir que la aplicación todavía usaba la versión anterior de la plantilla Jinja.
Entonces, ¿hay alguna manera de hacer que Flask supervise los archivos en el directorio de plantillas o es necesario sumergirse en la fuente del marco?
Editar : estoy usando Ubuntu 10.10. Realmente no lo he probado en ninguna otra plataforma.
Después de investigar más, descubrí que los cambios en las plantillas se actualizan en tiempo real, sin tener que volver a cargar la aplicación. Sin embargo, esto parece aplicarse solo a las plantillas a las que se pasa flask.render_template
.
Pero sucede que en mi aplicación, tengo bastantes componentes reutilizables y parametrizados que utilizo en las plantillas de Jinja. Se implementan como {% macro %}
s, residen en "módulos" dedicados y se {% import %}
editan en páginas reales. Todo agradable y SECO ... excepto que esas plantillas importadas aparentemente nunca se revisan para detectar modificaciones, ya que no pasan render_template
en absoluto.
(Curiosamente, esto no sucede con las plantillas invocadas mediante {% extends %}
. En cuanto a {% include %}
, no tengo ni idea, ya que realmente no las uso).
Entonces, para terminar, las raíces de este fenómeno parecen estar en algún lugar entre Jinja y Flask o Werkzeug. Supongo que puede justificar un viaje al rastreador de errores para cualquiera de esos proyectos :) Mientras tanto, he aceptado el jd. La respuesta es porque esa es la solución que realmente utilicé, y funciona como un encanto.