Varsayılan olarak, yerleşik sunucuyu ( Flask.run
) kullanarak Flask uygulamasını çalıştırırken , Python dosyalarını izler ve kodu değişirse uygulamayı otomatik olarak yeniden yükler:
* Detected change in '/home/xion/hello-world/app.py', reloading
* Restarting with reloader
Ne yazık ki, bu yalnızca * .py dosyaları için çalışıyor gibi görünüyor ve bu işlevi diğer dosyalara genişletmenin bir yolunu bulamıyorum. En önemlisi, bir şablon değiştiğinde Flask'ın uygulamayı yeniden başlatması son derece yararlı olacaktır . Şablonlarda işaretlemeyle kaç kez uğraştığımı ve herhangi bir değişiklik görmeyerek kafamın karıştığını, yalnızca uygulamanın Jinja şablonunun eski sürümünü kullandığını öğrenmek için kaybettim.
Öyleyse, şablonlar dizininde Flask izleme dosyalarına sahip olmanın bir yolu var mı , yoksa çerçevenin kaynağına dalmayı mı gerektiriyor?
Düzenleme : Ubuntu 10.10 kullanıyorum. Bunu başka platformlarda gerçekten denemedim.
Daha fazla araştırmadan sonra, şablonlardaki değişikliklerin gerçekten de uygulamanın kendisini yeniden yüklemeden gerçek zamanlı olarak güncellendiğini keşfettim . Ancak, bu yalnızca iletilen şablonlar için geçerli görünüyor flask.render_template
.
Ancak uygulamamda Jinja şablonlarında kullandığım oldukça fazla sayıda yeniden kullanılabilir, parametreleştirilmiş bileşene sahibim. Bunlar, {% macro %}
s olarak uygulanırlar , özel "modüller" içinde bulunurlar {% import %}
ve gerçek sayfalar halinde düzenlenirler. Hepsi güzel ve KURU ... İçe aktarılan şablonların görünüşe göre hiçbir şekilde geçmedikleri için değişiklikler için asla kontrol edilmemesi render_template
dışında.
(Merakla, bu, aracılığıyla çalıştırılan şablonlar için geçerli değildir {% extends %}
. Gelince {% include %}
, onları gerçekten kullanmadığım için hiçbir fikrim yok.)
Sonuç olarak, bu fenomenin kökleri Jinja ile Flask veya Werkzeug arasında bir yerde yatıyor gibi görünüyor. Sanırım bu projelerden herhangi biri için bug tracker'a gitmeyi gerektirebilir :) Bu arada jd'yi kabul ettim . cevabı çünkü aslında kullandığım çözüm buydu - ve bir cazibe gibi çalışıyor.