TurboGears - Dipendenze

Un progetto TurboGears contiene le seguenti directory:

  • Config - Dove si basa l'impostazione e la configurazione del progetto

  • Controllers - Tutti i controllori di progetto, la logica dell'applicazione web

  • i018n - File di traduzione per le lingue supportate

  • Lib - Funzioni e classi di utilità python

  • Model - Modelli di database

  • Public Static Files - CSS, JavaScript e immagini

  • Templates - Modelli esposti dai nostri controllori.

  • Tests - La serie di test effettuati.

  • Websetup - Funzioni da eseguire durante la configurazione dell'applicazione.

Come installare un progetto

Questo progetto ora deve essere installato. UNsetup.pyè già fornito nella directory di base del progetto. Le dipendenze del progetto vengono installate quando viene eseguito questo script.

Python setup.py develop

Per impostazione predefinita, le seguenti dipendenze vengono installate al momento della configurazione del progetto:

  • Beaker
  • Genshi
  • zope.sqlalchemy
  • sqlalchemy
  • alembic
  • repoze.who
  • tw2.forms
  • tgext.admin ≥ 0.6.1
  • WebHelpers2
  • babel

Dopo l'installazione, inizia a servire il progetto sul server di sviluppo immettendo il seguente comando nella shell:

Gearbox serve –reload –debug

Segui il comando sopra indicato per servire un progetto di esempio predefinito. Apertohttp://localhost:8080nel browser. Questa applicazione di esempio già pronta fornisce una breve introduzione sul framework stesso di TurboGears.

In questo progetto Hello, il controller predefinito viene creato nella directory dei controller come Hello/hello/controllers.root.py. Lasciatecimodify root.py con il seguente codice -

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"

Una volta che un'applicazione di lavoro di base è pronta, è possibile aggiungere più viste nella classe controller. NelMycontroller classe sopra, un nuovo metodo sayHello()è aggiunto. Il@expose() decoratore attribuisce /sayHelloURL ad esso. Questa funzione è progettata per accettare un nome come parametro dall'URL.

Dopo aver avviato il server tramite il comando "gearbox serve", http://localhost:8080. Il messaggio Hello World verrà visualizzato nel browser, anche se vengono inseriti i seguenti URL:

http://localhost:8080/

http://localhost:8080/index

Tutti questi URL sono associati a RootController.index()metodo. Anche questa classe ha_default()metodo che verrà richiamato, ogni volta che un URL non è mappato a nessuna funzione specifica. La risposta all'URL viene mappata a una funzione dal decoratore @expose ().

È possibile inviare un parametro a una funzione esposta dall'URL. La seguente funzione legge il parametro name dall'URL.

@expose()
def sayHello(self, name):
   return '<h3>Hello %s</h3>' %name

Il seguente output verrà visualizzato nel browser come risposta all'URL: http://localhost:8080/?name=MVL

Hello MVL

TurboGears mappa automaticamente i parametri URL sugli argomenti della funzione. La nostra classe RootController viene ereditata da BaseController. Questo è definito comebase.py nel lib folder di applicazione.

Il suo codice è il seguente:

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__ invia al metodo Controller a cui viene indirizzata la richiesta.