Domyślnie, uruchamiając aplikację Flask przy użyciu wbudowanego serwera ( Flask.run
), monitoruje ona swoje pliki w języku Python i automatycznie ponownie ładuje aplikację, jeśli jej kod ulegnie zmianie:
* Detected change in '/home/xion/hello-world/app.py', reloading
* Restarting with reloader
Niestety, wydaje się, że działa to tylko dla plików * .py i nie wydaje mi się, aby znaleźć sposób na rozszerzenie tej funkcji na inne pliki. Przede wszystkim niezwykle przydatne byłoby ponowne uruchomienie aplikacji Flask po zmianie szablonu . Straciłem rachubę, ile razy majstrowałem przy znacznikach w szablonach i byłem zdezorientowany, nie widząc żadnych zmian, tylko po to, aby dowiedzieć się, że aplikacja nadal używa starej wersji szablonu Jinja.
Czy jest więc sposób na umieszczenie plików monitora Flask w katalogu szablonów , czy też wymaga to zanurzenia się w źródłach frameworka?
Edycja : używam Ubuntu 10.10. Tak naprawdę nie próbowałem tego na żadnej innej platformie.
Po dalszym dochodzeniu odkryłem, że zmiany w szablonach są rzeczywiście aktualizowane w czasie rzeczywistym, bez ponownego ładowania samej aplikacji. Wydaje się jednak, że dotyczy to tylko tych szablonów, które są przekazywane do flask.render_template
.
Tak się jednak składa, że w swojej aplikacji mam całkiem sporo sparametryzowanych komponentów wielokrotnego użytku, których używam w szablonach Jinja. Są zaimplementowane jako {% macro %}
s, znajdują się w dedykowanych „modułach” i są umieszczane {% import %}
na rzeczywistych stronach. Wszystko ładne i SUCHE ... poza tym, że te zaimportowane szablony najwyraźniej nigdy nie są sprawdzane pod kątem modyfikacji, ponieważ w ogóle nie przechodzą render_template
.
(Co ciekawe, nie dzieje się tak w przypadku szablonów wywoływanych za pośrednictwem {% extends %}
. {% include %}
Nie mam pojęcia, ponieważ tak naprawdę ich nie używam).
Podsumowując, korzenie tego zjawiska wydają się leżeć gdzieś pomiędzy Jinją a Flaskiem lub Werkzeugiem. Myślę, że to może uzasadniać podróż do śledzenia błędów dla któregokolwiek z tych projektów :) W międzyczasie zaakceptowałem jd. odpowiedź, ponieważ właśnie tego użyłem - i działa jak urok.