Если вы используете Vanilla Bottle с 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, я не тестировал более свежие версии фреймворка.
Это поведение недокументировано, но Марсель Хеллкамп объяснил это в этой теме . Там также упоминаются другие решения:
- Передайте глобалы в
_vars
или аналогичном шаблоне arg.
- Создать декоратор для предоставления значений по умолчанию.
Кроме того, в бутылке 0.10 в пространство имен шаблона SimpleTemplate были добавлены новые функции: defined
, get
и setdefault