Расширения TurboGears идентифицируются пакетом tgext. * . Инструментарий Gearbox предоставляет команду tgext для создания примера расширения. Например —
gearbox tgext -n myextension
Другие необязательные параметры для этой команды:
-
—author — имя автора пакета.
-
—email — адрес электронной почты автора пакета.
-
—licence — лицензия, используемая для пакета. По умолчанию это MIT.
-
—description — Описание пакета.
-
—keywords — Пакет ключевых слов (по умолчанию: turbogears2.extension).
—author — имя автора пакета.
—email — адрес электронной почты автора пакета.
—licence — лицензия, используемая для пакета. По умолчанию это MIT.
—description — Описание пакета.
—keywords — Пакет ключевых слов (по умолчанию: turbogears2.extension).
Это создаст каталог tgext.myextension, который имеет простой пример расширения внутри.
Запустите setup.py внутри каталога —
Python setup.py install
Файл _init_.py внутри папки tgext / myextension содержит —
-
Функция Plugme — это точка входа в расширение.
-
Класс SetupExtension — здесь происходит инициализация расширения.
-
Функция On_startup — внутри класса есть хук, зарегистрированный в функции __call__ внутри класса.
Функция Plugme — это точка входа в расширение.
Класс SetupExtension — здесь происходит инициализация расширения.
Функция On_startup — внутри класса есть хук, зарегистрированный в функции __call__ внутри класса.
Краткая версия tgext \ myextension \ __ init__.py .
from tg import config from tg import hooks from tg.configuration import milestones import logging log = logging.getLogger('tgext.myextension') def plugme(configurator, options = None): if options is None: options = {} log.info('Setting up tgext.myextension extension...') milestones.config_ready.register(SetupExtension(configurator)) return dict(appid='tgext.myextension') class SetupExtension(object): def __init__(self, configurator): self.configurator = configurator def __call__(self): log.info('>>> Public files path is %s' % config['paths']['static_files']) hooks.register('startup', self.on_startup) def echo_wrapper_factory(handler, config): def echo_wrapper(controller, environ, context): log.info('Serving: %s' % context.request.path) return handler(controller, environ, context) return echo_wrapper self.configurator.register_wrapper(echo_wrapper_factory) def on_startup(self): log.info('+ Application Running!')
После того, как расширение установлено, включите его, сделав следующие дополнения в файле конфигурации приложения app_cfg.py .
from tgext.myextension import plugme plugme(base_config)
Если мы запускаем сервер с помощью команды сервера коробки передач, уведомление о недавно зарегистрированном расширении можно просмотреть на консоли следующим образом: