我正在尝试在 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 的子类的一个实例)并调用内部视图函数(Django+Coffin+Jinja2)。Environment
ENV.get_template()
发现如果我在视图函数中的环境模块上调用 python 的内置reload()
函数,模板确实会切换,但我不想将该代码粘贴到每个函数中。