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.