使用Bottle.py在每个页面的模板上下文中包含变量

Mat*_*ain 7 python templates bottle flask

你有没有在Flask中获得的bottle.py等效的上下文处理器?

Hel*_*lgi 5

如果您使用带有 SimpleTemplate 的 vanilla Bottle,我偶然发现了一个解决方案。

对于我的网站,我需要访问每个模板中的一些功能,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
Run Code Online (Sandbox Code Playgroud)

这适用于 Bottle 0.9,我没有在该框架的更新版本上进行测试。

此行为未记录在案,但 Marcel Hellkamp 在此线程中对其进行了解释。在那里,还提到了其他解决方案:

  • 传递全局变量_vars或类似的模板 arg。
  • 创建一个装饰器来提供默认值。

此外,在瓶0.10,与问题有关的新的职能在SimpleTemplate模板命名空间介绍:definedget,和setdefault