我想在不重新启动应用程序的情况下在django应用程序中切换Jinja2模板。如何强制Jinja2模板重新编译?
有没有人这样做?基本上我需要强制jinja2在应用皮肤选择更改后重新加载模板。
我试着在模板环境对象上重新创建缓存对象,但没有任何效果。
myskin_utils.py:
from jinja2.environment import create_cache
ENV_OBJECT.cache = create_cache(50)
我也尝试重新加载一个包含我的
reload(myskin) #also no effect on the output
另一件事我想改变的飞行是语言ENV_OBJECT模块,但我想这是一个单独的问题。
感谢您的任何建议。我没有使用jinja2设置缓存,但是我看到从Django模板切换后使用Jinja的速度提高了,我怀疑模板字节码存在于我的视图函数的编译代码中,但是我没有研究过忍者的细节。
我有ENV(的CoffinEnvironment
一个实例,其子类神社的Environment
)在视图模块的全局命名空间的进口,并呼吁ENV.get_template()
内视图功能(Django的+棺材+ Jinja2的)。
发现,如果我叫Python的reload()
内建我的环境模块上内视图功能模板做开关,但我不希望坚持的代码到每一个功能。
谢谢!我没有为Jinja2设置缓存。如果我这样做,你认为我会在我的环境中加快速度吗?我的理解是,我的模板字节码已经在内存中,对不对?再次感谢! – Evgeny 2010-11-18 17:08:30
我认为这个答案是错误的 - 根据[this](http://jinja.pocoo.org/docs/api/#bytecode-cache),字节码缓存仅用于第一次运行,而不是每个请求。至于自动重新加载更改模板,有'auto_reload'选项[这里](http://jinja.pocoo.org/docs/api/#jinja2.Environment)。不知道在2010年11月如果是相同的,这就是为什么我不低调这个答案。 – 2012-01-18 23:23:12