Учебники

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)

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