Par défaut, lors de l'exécution de l'application Flask à l'aide du serveur intégré ( Flask.run
), il surveille ses fichiers Python et recharge automatiquement l'application si son code change:
* Detected change in '/home/xion/hello-world/app.py', reloading
* Restarting with reloader
Malheureusement, cela semble fonctionner uniquement pour les fichiers * .py , et je ne semble pas trouver de moyen d'étendre cette fonctionnalité à d'autres fichiers. Plus particulièrement, il serait extrêmement utile que Flask redémarre l'application lorsqu'un modèle change. J'ai perdu le compte du nombre de fois où j'ai joué avec le balisage dans les modèles et que je me suis trompé de ne voir aucun changement, pour découvrir que l'application utilisait toujours l'ancienne version du modèle Jinja.
Alors, y a-t-il un moyen d'avoir les fichiers de surveillance Flask dans le répertoire des modèles , ou faut-il plonger dans la source du framework?
Edit : J'utilise Ubuntu 10.10. Je n'ai vraiment essayé cela sur aucune autre plate-forme.
Après une enquête plus approfondie, j'ai découvert que les modifications apportées aux modèles sont effectivement mises à jour en temps réel, sans recharger l'application elle-même. Cependant, cela semble s'appliquer uniquement aux modèles passés à flask.render_template
.
Mais il se trouve que dans mon application, j'ai pas mal de composants réutilisables et paramétrés que j'utilise dans les modèles Jinja. Ils sont implémentés en tant que {% macro %}
s, résident dans des "modules" dédiés et sont {% import %}
édités dans des pages réelles. Tout est agréable et SEC ... sauf que ces modèles importés ne sont apparemment jamais vérifiés pour les modifications, car ils ne passent pas render_template
du tout.
(Curieusement, cela ne se produit pas pour les modèles appelés via {% extends %}
. Quant à {% include %}
moi, je n'en ai aucune idée car je ne les utilise pas vraiment.)
Donc, pour conclure, les racines de ce phénomène semblent se situer quelque part entre Jinja et Flask ou Werkzeug. Je suppose que cela peut justifier un voyage au bug tracker pour l'un ou l'autre de ces projets :) En attendant, j'ai accepté le jd. La réponse parce que c'est la solution que j'ai réellement utilisée - et cela fonctionne comme un charme.