Secara default, ketika menjalankan aplikasi Flask menggunakan built-in server ( Flask.run
), ia memonitor file Python-nya dan secara otomatis memuat ulang aplikasi jika kodenya berubah:
* Detected change in '/home/xion/hello-world/app.py', reloading
* Restarting with reloader
Sayangnya, ini tampaknya hanya berfungsi untuk file * .py , dan saya sepertinya tidak menemukan cara untuk memperluas fungsionalitas ini ke file lain. Terutama, akan sangat berguna jika Flask memulai ulang aplikasi saat template berubah. Saya tidak dapat menghitung berapa kali saya mengutak-atik markup di template dan menjadi bingung karena tidak melihat perubahan apa pun, hanya untuk mengetahui bahwa aplikasi tersebut masih menggunakan template Jinja versi lama.
Jadi, apakah ada cara untuk memiliki file monitor Flask di direktori templates , atau apakah itu membutuhkan masuk ke sumber framework?
Edit : Saya menggunakan Ubuntu 10.10. Belum pernah mencobanya di platform lain.
Setelah penyelidikan lebih lanjut, saya telah menemukan bahwa perubahan dalam template memang sedang diperbarui secara real time, tanpa reload aplikasi itu sendiri. Namun, ini tampaknya hanya berlaku untuk template yang diteruskan flask.render_template
.
Tapi kebetulan di aplikasi saya, saya memiliki cukup banyak komponen parameter yang dapat digunakan kembali yang saya gunakan di template Jinja. Mereka diimplementasikan sebagai {% macro %}
s, berada dalam "modul" khusus dan {% import %}
diubah menjadi halaman sebenarnya. Semuanya bagus dan KERING ... kecuali bahwa templat yang diimpor itu tampaknya tidak pernah diperiksa untuk modifikasi, karena tidak lolos render_template
sama sekali.
(Anehnya, ini tidak terjadi untuk template yang dipanggil melalui {% extends %}
. Adapun {% include %}
, saya tidak tahu karena saya tidak benar-benar menggunakannya.)
Jadi untuk menyimpulkan, akar dari fenomena ini tampaknya terletak di antara Jinja dan Flask atau Werkzeug. Saya kira ini mungkin memerlukan perjalanan ke pelacak bug untuk salah satu proyek tersebut :) Sementara itu, saya telah menerima jd. jawabannya karena itulah solusi yang sebenarnya saya gunakan - dan berfungsi dengan sangat baik.