在每个带有瓶子.py

2024-04-19 07:29:12 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有瓶子.py相当于你在烧瓶里得到的上下文处理器?在


Tags: py瓶子烧瓶处理器
3条回答

如果您使用的是带有SimpleTemplate的香草瓶,我偶然发现了一个解决方案。在

对于我的站点,我需要访问每个模板中的一些函数,app.get_url显然就是其中之一。这对我很有效:

# after app creation, but before the views
SimpleTemplate.defaults["get_url"] = app.get_url
SimpleTemplate.defaults["url"] = lambda: request.url
SimpleTemplate.defaults["fullpath"] = lambda: request.fullpath
SimpleTemplate.defaults["sorted"] = sorted

从0.9开始就可以了,我没有在框架的最新版本上进行测试。在

这个行为没有文档记录,但是marcelhellkamp在this thread中解释了它。其中还提到了其他解决方案:

  • 传递_vars中的全局参数或类似的模板参数。在
  • 创建一个decorator来提供默认值。在

另外,在bottle0.10中,在SimpleTemplate模板名称空间中引入了与该问题相关的新函数:^{}, ^{}, and ^{}

注意:此解决方案可用于其他模板引擎。技术完全相同,但是您使用BaseTemplate(它适用于所有模板类)或您要使用的引擎的类。在

使用来自Helgiprevious answer,我使用这个钩子来制作一个类似于的上下文处理器(bottle 0.12.x):

import bottle


@bottle.hook('before_request')
def _context_processor():
    bottle.SimpleTemplate.defaults['foo'] = 'F00'
    bottle.SimpleTemplate.defaults['bar'] = 'B@R'

相关问题 更多 >