Хороший способ передать переменные для общих элементов в шаблоны Mako?
Вопрос
Я использую функции наследования Mako, чтобы выделить общие элементы страницы, такие как верхний и нижний колонтитулы, в шаблон «base.mako».Контроллеры, специфичные для страниц, используют свои собственные шаблоны, которые наследуют base.mako.
base.mako нужен набор переменных — например, имя вошедшего в систему пользователя указывается в заголовке всех страниц.Однако именно отдельный контроллер страницы выбирает и отображает шаблон и, следовательно, отвечает за передачу ему переменных.
Я бы предпочел, чтобы все эти контроллеры страниц не знали, что нужно базовому шаблону в его контексте.Каков хороший способ установить контекст для базового шаблона в такой ситуации?
Заранее спасибо!
Решение
У вас есть два варианта объектно-ориентированного дизайна для контроллеров страниц.
Общие функции могут обрабатываться двумя способами.
Наследование.Все контроллеры страниц являются подклассами общего класса, который предоставляет общие атрибуты.
Делегация.Все контроллеры страниц являются частью конвейера, в котором какой-то общий процесс (до или после контроллера страниц) передает дополнительную информацию.
Вы должны выбрать один.