Is there a bottle.py equivalent of context processors that you get in Flask?
If you're using vanilla Bottle with SimpleTemplate, there is a solution I've stumbled upon.
For my site, I needed access to some functions in every template, app.get_url
being obviously one of them. This worked for me:
# 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
This works as of Bottle 0.9, I didn't test on more recent versions of the framework.
This behavior is undocumented, but Marcel Hellkamp explained it in this thread. In there, other solutions are also mentioned:
_vars
or a similar template arg.Also, in Bottle 0.10, new functions related to the problem were introduced in the SimpleTemplate template namespace: defined
, get
, and setdefault
Using the previous answer from Helgi, I use this hook to make a context processor like (bottle 0.12.x) :
import bottle
@bottle.hook('before_request')
def _context_processor():
bottle.SimpleTemplate.defaults['foo'] = 'F00'
bottle.SimpleTemplate.defaults['bar'] = 'B@R'
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With