TurboGears - Yazma Uzantıları
TurboGears uzantıları şu şekilde tanımlanır: tgext.* package. Bir Gearbox araç seti, örnek bir uzantı oluşturmak için tgext komutu sağlar. Örneğin -
gearbox tgext -n myextensionBu komut için diğer isteğe bağlı parametreler şunlardır:
- --author - paket yazarının adı. 
- --email - paket yazarının e-postası. 
- --licence- paket için kullanılan lisans. Varsayılan MIT'dir. 
- --description - Paketin açıklaması. 
- --keywords - Paket anahtar sözcükleri (varsayılan: turbogears2.extension). 
Bu, içinde basit bir örnek uzantıya sahip bir tgext.myextension dizini oluşturacaktır.
Run the setup.py dizinin içinde -
Python setup.py install_init_.py içindeki dosya tgext/myextension klasör şunları içerir -
- Plugme function - Bu, uzantının giriş noktasıdır. 
- SetupExtension class - uzantı başlatma burada gerçekleşir. 
- On_startup function - sınıfın içinde, sınıf içindeki __call__ işlevine kayıtlı bir kanca bulunur. 
Kısa versiyonu 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!')Uzantı yüklendikten sonra, uygulamanın uzantısına aşağıdaki eklemeleri yaparak açın. app_cfg.py yapılandırma dosyası.
from tgext.myextension import plugme
plugme(base_config)Sunucuyu bir dişli kutusu sunucu komutu kullanarak başlatırsak, yeni kaydedilmiş bir uzantının bildirimi aşağıdaki şekilde konsolda görüntülenebilir -
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