Turbogears-writing-extensions

提供:Dev Guides
移動先:案内検索

TurboGears-拡張機能の作成

TurboGears拡張機能は、* tgext。*パッケージ*で識別されます。 Gearboxツールキットには、サンプル拡張機能を作成するtgextコマンドが用意されています。 たとえば-

gearbox tgext -n myextension

このコマンドの他のオプションのパラメータは-

  • *-author *-パッケージ作成者の名前。
  • *-email *-パッケージ作成者の電子メール。
  • *-licence *-パッケージに使用されるライセンス。 デフォルトはMITです。
  • *-description *-パッケージの説明。
  • *-keywords *-パッケージのキーワード(デフォルト:turbogears2.extension)。

これにより、tgext.myextensionディレクトリが作成されます。このディレクトリには、簡単なサンプル拡張機能が含まれています。

  • ディレクトリ内でsetup.py *を実行します-
Python setup.py install
*tgext/myextension* フォルダー内の *_init_.py* ファイルには以下が含まれます-
  • プラグイン機能-これは、拡張のエントリポイントです。

  • * 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)

ギアボックスサーバーコマンドを使用してサーバーを起動した場合、新しく登録された拡張機能の通知は、次のようにコンソールで表示できます-

14:29:13,250 INFO [tgext.myextension] Setting up tgext.myextension extension...
14:29:13,453 INFO [tgext.myextension] >>> Public files path is c:\tghello\hello\hello\public
14:29:13,453 INFO [tgext.myextension] + Application Running!

Starting Standard HTTP server on http://127.0.0.1:8080