TurboGears - Abhängigkeiten
Ein TurboGears-Projekt enthält die folgenden Verzeichnisse:
Config - Wo die Einrichtung und Konfiguration des Projekts abhängt
Controllers - Alle Projektcontroller, die Logik der Webanwendung
i018n - Übersetzungsdateien für die unterstützten Sprachen
Lib - Utility-Python-Funktionen und -Klassen
Model - Datenbankmodelle
Public Static Files - CSS, JavaScript und Bilder
Templates - Vorlagen, die von unseren Controllern verfügbar gemacht werden.
Tests - Die Anzahl der durchgeführten Tests.
Websetup - Funktionen, die beim Setup der Anwendung ausgeführt werden sollen.
So installieren Sie ein Projekt
Dieses Projekt muss jetzt installiert werden. EINsetup.pyist bereits im Basisverzeichnis des Projekts enthalten. Projektabhängigkeiten werden installiert, wenn dieses Skript ausgeführt wird.
Python setup.py develop
Standardmäßig werden zum Zeitpunkt der Projekteinrichtung folgende Abhängigkeiten installiert:
- Beaker
- Genshi
- zope.sqlalchemy
- sqlalchemy
- alembic
- repoze.who
- tw2.forms
- tgext.admin ≥ 0.6.1
- WebHelpers2
- babel
Starten Sie nach der Installation das Projekt auf dem Entwicklungsserver, indem Sie den folgenden Befehl in der Shell eingeben:
Gearbox serve –reload –debug
Befolgen Sie den oben genannten Befehl, um ein vorgefertigtes Beispielprojekt bereitzustellen. Öffnenhttp://localhost:8080im Browser. Diese vorgefertigte Beispielanwendung bietet eine kurze Einführung in das TurboGears-Framework.
In diesem Hello-Projekt wird der Standard-Controller im Controller-Verzeichnis als erstellt Hello/hello/controllers.root.py. Lasst unsmodify root.py mit folgendem Code -
from hello.lib.base import BaseController
from tg import expose, flash
class RootController(BaseController):
movie = MovieController()
@expose()
def index(self):
return "<h1>Hello World</h1>"
@expose()
def _default(self, *args, **kw):
return "This page is not ready"
Sobald eine grundlegende Arbeitsanwendung bereit ist, können der Controller-Klasse weitere Ansichten hinzugefügt werden. In demMycontroller Klasse oben, eine neue Methode sayHello()hinzugefügt. Das@expose() Dekorateur befestigt /sayHelloURL dazu. Diese Funktion akzeptiert einen Namen als Parameter aus der URL.
Nach dem Starten des Servers über den Befehl 'Getriebe bedienen' http://localhost:8080. Die Hello World-Nachricht wird im Browser angezeigt, auch wenn die folgenden URLs eingegeben wurden:
http://localhost:8080/
http://localhost:8080/index
Alle diese URLs sind zugeordnet RootController.index()Methode. Diese Klasse hat auch_default()Methode, die aufgerufen wird, wenn eine URL keiner bestimmten Funktion zugeordnet ist. Die Antwort auf die URL wird von @expose () decorator einer Funktion zugeordnet.
Es ist möglich, einen Parameter über die URL an eine exponierte Funktion zu senden. Die folgende Funktion liest den Parameter name aus der URL.
@expose()
def sayHello(self, name):
return '<h3>Hello %s</h3>' %name
Die folgende Ausgabe wird im Browser als Antwort auf die URL angezeigt: http://localhost:8080/?name=MVL
Hello MVL
TurboGears ordnet URL-Parameter automatisch Funktionsargumenten zu. Unsere RootController-Klasse wird von BaseController geerbt. Dies ist definiert alsbase.py in dem lib folder der Anwendung.
Sein Code lautet wie folgt:
from tg import TGController, tmpl_context
from tg import request
__all__ = ['BaseController']
def __call__(self, environ, context):
tmpl_context.identity = request.identity
return TGController.__call__(self, environ, context)
TGController.__call__ Versendet an die Controller-Methode, an die die Anforderung weitergeleitet wird.