TurboGears-拡張機能の作成
TurboGears拡張機能はによって識別されます tgext.* package。Gearboxツールキットには、サンプル拡張機能を作成するためのtgextコマンドが用意されています。例-
gearbox tgext -n myextension
このコマンドの他のオプションのパラメーターは次のとおりです。
--author −パッケージ作成者の名前。
--email −パッケージ作成者の電子メール。
--licence−パッケージに使用されるライセンス。デフォルトはMITです。
--description −パッケージの説明。
--keywords −パッケージキーワード(デフォルト:turbogears2.extension)。
これにより、tgext.myextensionディレクトリが作成されます。このディレクトリには、単純なサンプル拡張子が含まれています。
Run the setup.py ディレクトリ内-
Python setup.py install
ザ・ _init_.py 内部のファイル tgext/myextension フォルダに含まれる-
Plugme function −これは拡張のエントリポイントです。
SetupExtension class −拡張機能の初期化はここで行われます。
On_startup function −クラス内には、クラス内の__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