我在新应用程序中使用了bottle.py框架和Jinja2模板。
每当用户登录应用程序时,我想添加一个新的全局Jinja2变量,其中包含活动用户的名称,因此在部分模板(标题)中,我可以显示此名称。
在我的python(瓶子)文件中,根据我迄今为止搜索过的内容,我尝试了几件事,但还没有成功。
这是我在函数中尝试的最后一件事:
import jinja2
env = jinja2.Environment(loader=jinja2.FileSystemLoader('templates'))
env.globals['myglobal'] = 'My global'
#env.globals.update({'myglobal': 'My global'})
但是,当把它放到标题模板中时:{{myglobal}}它根本就不会出现。
由于这是我第一次使用瓶子和jinja2,任何人都知道如何实现这个目标?
答案 0 :(得分:3)
我有类似的设置,这适用于我使用内置于瓶中的BaseTemplate:
from bottle import BaseTemplate
BaseTemplate.defaults['myglobal'] = 'My global'
答案 1 :(得分:2)
在这种情况下,你需要使用before_request钩子,如下所示:
e.Register(() => new EmptyUnitOfWork());
答案 2 :(得分:0)
from bottle import Jinja2Template
Jinja2Template.defaults['foo'] = 'bar'
这是为每个渲染的jinja2模板添加一个变量。如果你想添加一个过滤器,我就是这样做的:
import functools
from bottle import jinja2_view
def foo():
return 'bar'
view = functools.partial(jinja2_view, template_settings={
'filters': {'foo': foo}})
您可以使用此设置任何jinja2设置。