 
- TurboGears 教程
- TurboGears - 主页
- TurboGears - 概述
- TurboGears - 环境
- TurboGears - 第一个程序
- TurboGears - 依赖关系
- TurboGears - 服务模板
- TurboGears - HTTP 方法
- Genshi模板语言
- TurboGears - 包括
- TurboGears - JSON 渲染
- TurboGears - URL 层次结构
- TurboGears - Toscawidgets 表格
- TurboGears - 验证
- TurboGears - 闪讯
- TurboGears - Cookie 和会话
- TurboGears - 缓存
- TurboGears - Sqlalchemy
- TurboGears - 创建模型
- TurboGears - 原油操作
- TurboGears - 数据网格
- TurboGears - 分页
- TurboGears - 管理员访问
- 授权与认证
- TurboGears - 使用 MongoDB
- TurboGears - 脚手架
- TurboGears - 挂钩
- TurboGears - 编写扩展
- TurboGears - 可插拔应用
- TurboGears - 安静的应用程序
- TurboGears - 部署
- TurboGears 有用资源
- TurboGears - 快速指南
- TurboGears - 有用的资源
- TurboGears - 讨论
TurboGears - 编写扩展
TurboGears 扩展由tgext.* package标识。Gearbox 工具包提供了 tgext 命令来创建示例扩展。例如 -
gearbox tgext -n myextension
该命令的其他可选参数是 -
- --author - 包作者的姓名。 
- --email - 软件包作者的电子邮件。 
- --licence - 用于软件包的许可证。默认是麻省理工学院。 
- --description - 包的描述。 
- --keywords - 包关键字(默认值:turbogears2.extension)。 
这将创建一个 tgext.myextension 目录,其中有一个简单的示例扩展。
在目录中运行 setup.py -
Python setup.py install
tgext/myextension文件夹中的_init_.py文件包含 -
- 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)
如果我们使用变速箱服务器命令启动服务器,则可以通过以下方式在控制台上查看新注册扩展的通知 -
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