TurboGears - लेखन एक्सटेंशन

TurboGears एक्सटेंशन द्वारा पहचाना जाता है tgext.* package। एक गियरबॉक्स टूलकिट नमूना विस्तार बनाने के लिए 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