TurboGears - Schreiben von Erweiterungen
TurboGears-Erweiterungen sind gekennzeichnet durch tgext.* package. Ein Gearbox-Toolkit enthält den Befehl tgext zum Erstellen einer Beispielerweiterung. Zum Beispiel -
gearbox tgext -n myextension
Andere optionale Parameter für diesen Befehl sind -
--author - Name des Paketautors.
--email - E-Mail des Paketautors.
--licence- Lizenz für Paket verwendet. Standard ist MIT.
--description - Beschreibung des Pakets.
--keywords - Paketschlüsselwörter (Standard: turbogears2.extension).
Dadurch wird ein Verzeichnis tgext.myextension erstellt, in dem sich eine einfache Beispielerweiterung befindet.
Run the setup.py innerhalb des Verzeichnisses -
Python setup.py install
Das _init_.py Datei im Inneren tgext/myextension Ordner enthält -
Plugme function - Dies ist der Einstiegspunkt der Erweiterung.
SetupExtension class - Hier erfolgt die Initialisierung der Erweiterung.
On_startup function - Innerhalb der Klasse ist ein Hook registriert, der für die Funktion __call__ innerhalb der Klasse registriert ist.
Kurzfassung des 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!')
Sobald die Erweiterung installiert ist, aktivieren Sie sie, indem Sie die folgenden Ergänzungen in der Anwendung vornehmen app_cfg.py Konfigurationsdatei.
from tgext.myextension import plugme
plugme(base_config)
Wenn wir den Server mit einem Getriebeserverbefehl starten, kann die Benachrichtigung über eine neu registrierte Erweiterung auf der Konsole wie folgt angezeigt werden:
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