📅  最后修改于: 2020-10-19 03:36:28             🧑  作者: Mango
TurboGears扩展由tgext。* package标识。 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