TurboGears - Tiện ích mở rộng Viết

Các phần mở rộng TurboGears được xác định bởi tgext.* package. Bộ công cụ Hộp số cung cấp lệnh tgext để tạo tiện ích mở rộng mẫu. Ví dụ -

gearbox tgext -n myextension

Các tham số tùy chọn khác cho lệnh này là:

  • --author - tên tác giả gói.

  • --email - email của tác giả gói.

  • --licence- giấy phép được sử dụng cho gói. Mặc định là MIT.

  • --description - Mô tả gói hàng.

  • --keywords - Từ khóa gói (mặc định: turbogears2.extension).

Thao tác này sẽ tạo một thư mục tgext.myextension, có một phần mở rộng mẫu đơn giản bên trong.

Run the setup.py bên trong thư mục -

Python setup.py install

Các _init_.py tập tin bên trong tgext/myextension thư mục chứa -

  • Plugme function - Đây là điểm vào của phần mở rộng.

  • SetupExtension class - khởi tạo tiện ích mở rộng diễn ra ở đây.

  • On_startup function - bên trong lớp là một hook được đăng ký trên hàm __call__ bên trong lớp.

Phiên bản ngắn gọn của 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!')

Sau khi tiện ích mở rộng được cài đặt, hãy bật nó bằng cách thực hiện các bổ sung sau trong ứng dụng của app_cfg.py tập tin cấu hình.

from tgext.myextension import plugme

plugme(base_config)

Nếu chúng tôi khởi chạy máy chủ bằng lệnh máy chủ hộp số, thông báo về tiện ích mở rộng mới được đăng ký có thể được xem trên bảng điều khiển bằng cách sau:

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