デフォルトでは、組み込みサーバー(Flask.run
)を使用してFlaskアプリケーションを実行すると、Pythonファイルを監視し、コードが変更された場合にアプリを自動的に再読み込みします。
* Detected change in '/home/xion/hello-world/app.py', reloading
* Restarting with reloader
残念ながら、これは* .pyファイルでのみ機能するようであり、この機能を他のファイルに拡張する方法を見つけられないようです。特に、テンプレートが変更されたときにFlaskでアプリを再起動すると非常に便利です。テンプレートのマークアップをいじって何度も変更が表示されないことに戸惑いましたが、アプリがまだJinjaテンプレートの古いバージョンを使用していることがわかりました。
では、テンプレートディレクトリにFlaskモニターファイルを置く方法はありますか、それともフレームワークのソースに飛び込む必要がありますか?
編集:Ubuntu 10.10を使用しています。他のプラットフォームでは実際に試したことがありません。
さらに、問い合わせの後、私は、テンプレートの変更が実際にあることを発見したされているアプリ自体をリロードせずに、リアルタイムに更新します。ただし、これはに渡されるテンプレートにのみ適用されるようflask.render_template
です。
しかし、たまたま私のアプリには、Jinjaテンプレートで使用する、再利用可能なパラメーター化されたコンポーネントがたくさんあります。これらはとして実装され{% macro %}
、専用の「モジュール」に常駐し、{% import %}
実際のページに組み込まれます。インポートされたテンプレートはまったく通過しないため、変更されたテンプレートが明らかにチェックされないことを除いて、すべてが素晴らしく、DRYですrender_template
。
(不思議なことに、これはを介して呼び出されたテンプレートでは発生しません{% extends %}
。については{% include %}
、実際には使用しないのでわかりません。)
まとめると、この現象のルーツは、ジンジャとフラスコまたはウェルクツグの間のどこかにあるようです。これらのプロジェクトのいずれかでバグトラッカーにアクセスする必要があると思います:)その間、私はjdを受け入れました。の答えは、それが実際に使用したソリューションであり、魅力のように機能するためです。