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