Bottle py 和 Jinja2 全局变量
Bottle py and Jinja2 global variable
我在新应用程序中使用 bottle.py 框架和 Jinja2 模板。
每当用户登录到应用程序时,我想添加一个新的全局 Jinja2 变量,其中包含活动用户的名称,因此在部分模板(header)中,我可以显示此名称。
在我的 python(瓶子)文件中,我已经根据目前在 Google 上搜索到的内容尝试了几种方法,但还没有成功。
这是我在函数内部尝试的最后一件事:
import jinja2
env = jinja2.Environment(loader=jinja2.FileSystemLoader('templates'))
env.globals['myglobal'] = 'My global'
#env.globals.update({'myglobal': 'My global'})
但是,当将其放入 header 模板时:{{myglobal}} 它根本不会显示。
因为这是我第一次使用 bottle 和 jinja2 谁知道如何实现这个?
在这种情况下,您需要使用 before_request 钩子,如下所示:
from bottle import Jinja2Template
@hook('before_request')
def before_request():
Jinja2Template.defaults['myglobal'] = 'My global'
我有一个类似的设置,使用 bottle 中内置的 BaseTemplate 这对我有用:
from bottle import BaseTemplate
BaseTemplate.defaults['myglobal'] = 'My global'
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 设置。
我在新应用程序中使用 bottle.py 框架和 Jinja2 模板。
每当用户登录到应用程序时,我想添加一个新的全局 Jinja2 变量,其中包含活动用户的名称,因此在部分模板(header)中,我可以显示此名称。
在我的 python(瓶子)文件中,我已经根据目前在 Google 上搜索到的内容尝试了几种方法,但还没有成功。
这是我在函数内部尝试的最后一件事:
import jinja2
env = jinja2.Environment(loader=jinja2.FileSystemLoader('templates'))
env.globals['myglobal'] = 'My global'
#env.globals.update({'myglobal': 'My global'})
但是,当将其放入 header 模板时:{{myglobal}} 它根本不会显示。
因为这是我第一次使用 bottle 和 jinja2 谁知道如何实现这个?
在这种情况下,您需要使用 before_request 钩子,如下所示:
from bottle import Jinja2Template
@hook('before_request')
def before_request():
Jinja2Template.defaults['myglobal'] = 'My global'
我有一个类似的设置,使用 bottle 中内置的 BaseTemplate 这对我有用:
from bottle import BaseTemplate
BaseTemplate.defaults['myglobal'] = 'My global'
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 设置。