Wenn die Flask-Anwendung mit dem integrierten Server ( Flask.run
) ausgeführt wird, überwacht sie standardmäßig ihre Python-Dateien und lädt die App automatisch neu, wenn sich ihr Code ändert:
* Detected change in '/home/xion/hello-world/app.py', reloading
* Restarting with reloader
Leider scheint dies nur für * .py- Dateien zu funktionieren , und ich finde anscheinend keine Möglichkeit, diese Funktionalität auf andere Dateien auszudehnen. Vor allem wäre es äußerst nützlich, wenn Flask die App neu startet, wenn sich eine Vorlage ändert. Ich habe die Zählung verloren, wie oft ich mit Markups in Vorlagen herumgespielt habe und verwirrt war, weil ich keine Änderungen gesehen habe, nur um herauszufinden, dass die App immer noch die alte Version der Jinja-Vorlage verwendet.
Gibt es eine Möglichkeit, Flask-Überwachungsdateien im Vorlagenverzeichnis zu haben , oder muss in die Quelle des Frameworks eingetaucht werden?
Edit : Ich benutze Ubuntu 10.10. Ich habe das auf keiner anderen Plattform wirklich versucht.
Nach einer weiteren Untersuchung habe ich , dass Änderungen in Vorlagen in der Tat entdeckt werden in Echtzeit aktualisiert werden , ohne erneutes Laden der App selbst. Dies scheint jedoch nur für die Vorlagen zu gelten, an die übergeben wird flask.render_template
.
Es kommt jedoch vor, dass ich in meiner App viele wiederverwendbare, parametrisierte Komponenten habe, die ich in Jinja-Vorlagen verwende. Sie sind als {% macro %}
s implementiert , befinden sich in dedizierten "Modulen" und werden {% import %}
in tatsächliche Seiten eingeteilt. Alles schön und trocken ... außer dass diese importierten Vorlagen anscheinend nie auf Änderungen überprüft werden, da sie überhaupt nicht durchlaufen werden render_template
.
(Merkwürdigerweise geschieht dies nicht für Vorlagen aufgerufen durch {% extends %}
. Was{% include %}
Ich habe keine Ahnung, da ich sie nicht wirklich verwende.)
Zum Abschluss scheinen die Wurzeln dieses Phänomens irgendwo zwischen Jinja und Flask oder Werkzeug zu liegen. Ich denke, es könnte eine Reise zum Bug-Tracker für eines dieser Projekte rechtfertigen :) In der Zwischenzeit habe ich die JD akzeptiert . Die Antwort, denn das ist die Lösung, die ich tatsächlich verwendet habe - und sie funktioniert wie ein Zauber.