アプリケーションを再起動せずに、djangoアプリでJinja2テンプレートを切り替えようとしています。
誰かがこれをしましたか?基本的に、スキン選択の変更が適用されたら、jinja2にテンプレートを再ロードさせる必要があります。
テンプレート環境オブジェクトにキャッシュオブジェクトを再作成しようとしましたが、効果はありません。
myskin_utils.py:
from jinja2.environment import create_cache
ENV_OBJECT.cache = create_cache(50)
ENV_OBJECTを含むモジュールをリロードしようとしました
reload(myskin) #also no effect on the output
その場で変えたいもう一つのことは言語ですが、それは別の質問だと思います。
アドバイスありがとうございます。
編集: jinja2でキャッシュを設定していませんが、Djangoテンプレートから切り替えた後、Jinjaを使用するとスピードアップします。テンプレートのバイトコードは、ビュー関数のコンパイル済みコードに含まれていると思われますが、詳細は調べませんでした。ジンジャの。
ENV(CoffinEnvironment
JinjaのサブクラスのインスタンスEnvironment
)をビューモジュールのグローバル名前空間にインポートし、ENV.get_template()
ビュー関数(Django + Coffin + Jinja2)内を呼び出します。
ビュー関数内の環境モジュールでpythonのreload()
組み込みを呼び出すと、テンプレートが切り替わりますが、そのコードをすべての関数に貼り付けたくないことがわかりました。