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.