TurboGears - Dependencias
Un proyecto de TurboGears contiene los siguientes directorios:
Config - Donde depende la instalación y configuración del proyecto
Controllers - Todos los controladores del proyecto, la lógica de la aplicación web.
i018n - Archivos de traducción para los idiomas admitidos
Lib - Funciones y clases de Python de utilidad
Model - Modelos de base de datos
Public Static Files - CSS, JavaScript e imágenes
Templates - Plantillas expuestas por nuestros controladores.
Tests - El conjunto de pruebas realizadas.
Websetup - Funciones para ejecutar en la configuración de la aplicación.
Cómo instalar un proyecto
Este proyecto ahora debe instalarse. UNsetup.pyya se proporciona en el directorio base del proyecto. Las dependencias del proyecto se instalan cuando se ejecuta este script.
Python setup.py develop
De forma predeterminada, las siguientes dependencias se instalan en el momento de la configuración del proyecto:
- Beaker
- Genshi
- zope.sqlalchemy
- sqlalchemy
- alembic
- repoze.who
- tw2.forms
- tgext.admin ≥ 0.6.1
- WebHelpers2
- babel
Después de la instalación, comience a servir el proyecto en el servidor de desarrollo emitiendo el siguiente comando en el shell:
Gearbox serve –reload –debug
Siga el comando mencionado anteriormente para servir un proyecto de ejemplo prediseñado. Abiertohttp://localhost:8080en el navegador. Esta aplicación de muestra ya preparada ofrece una breve introducción sobre el propio marco de TurboGears.
En este proyecto de Hello, el controlador predeterminado se crea en el directorio de controladores como Hello/hello/controllers.root.py. Nos dejamodify root.py con el siguiente código -
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 vez que una aplicación de trabajo básica está lista, se pueden agregar más vistas en la clase de controlador. En elMycontroller clase anterior, un nuevo método sayHello()está agregado. los@expose() decorador adjunta /sayHelloURL a él. Esta función está diseñada para aceptar un nombre como parámetro de la URL.
Después de iniciar el servidor a través del comando 'gearbox serve', http://localhost:8080. El mensaje Hello World se mostrará en el navegador, incluso si se ingresan las siguientes URL:
http://localhost:8080/
http://localhost:8080/index
Todas estas URL están asignadas a RootController.index()método. Esta clase también tiene_default()que se invocará siempre que una URL no esté asignada a ninguna función específica. El decorador @expose () asigna la respuesta a la URL a una función.
Es posible enviar un parámetro a una función expuesta desde la URL. La siguiente función lee el parámetro de nombre de la URL.
@expose()
def sayHello(self, name):
return '<h3>Hello %s</h3>' %name
El siguiente resultado se verá en el navegador como respuesta a la URL: http://localhost:8080/?name=MVL
Hello MVL
TurboGears asigna automáticamente parámetros de URL a argumentos de función. Nuestra clase RootController se hereda de BaseController. Esto se define comobase.py en el lib folder de aplicación.
Su código es el siguiente:
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__ envía al método Controller al que se enruta la solicitud.