Учебники

TurboGears – Написание расширений

Расширения 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)

Если мы запускаем сервер с помощью команды сервера коробки передач, уведомление о недавно зарегистрированном расширении можно просмотреть на консоли следующим образом: