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.