在Flask中是否有相当于bottle.py的上下文处理器?

最佳答案

如果您使用带有SimpleTemplate的 Vanilla 瓶,那么我偶然发现了一个解决方案。

对于我的网站,我需要访问每个模板中的某些功能,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

从Bottle 0.9开始有效,我没有在该框架的最新版本上进行过测试。

此行为没有记录,但是Marcel Hellkamp在this thread中对此进行了解释。在那里,还提到了其他解决方案:
  • _vars或类似模板arg中传递全局变量。
  • 创建一个装饰器以提供默认值。

  • 另外,在Bottle 0.10中,在SimpleTemplate模板 namespace 中引入了与该问题相关的新功能: defined , get , and setdefault

    关于python - 使用Bottle.py在每个页面的模板上下文中包含变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9759558/

    10-12 18:44