你在Flask中有没有both.py等效的上下文处理器?
答案 0 :(得分:4)
如果您使用带有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
这适用于Bottle 0.9,我没有测试更新版本的框架。
此行为未记录,但Marcel Hellkamp在this thread中对此进行了解释。在那里,还提到了其他解决方案:
_vars
中的全局变量或类似的模板arg。此外,在Bottle 0.10中,SimpleTemplate模板命名空间中引入了与该问题相关的新功能:defined
, get
, and setdefault
答案 1 :(得分:0)
注意:此解决方案可与其他模板引擎一起使用。该技术完全相同,但您使用BaseTemplate(适用于所有模板类)或您要使用的引擎类。
答案 2 :(得分:0)
使用 Helgi 中的previous answer,我使用此钩子制作了一个上下文处理器,如(瓶0.12.x):
import bottle
@bottle.hook('before_request')
def _context_processor():
bottle.SimpleTemplate.defaults['foo'] = 'F00'
bottle.SimpleTemplate.defaults['bar'] = 'B@R'