TurboGears - Dependências

Um projeto TurboGears contém os seguintes diretórios -

  • Config - Onde a instalação e configuração do projeto dependem

  • Controllers - Todos os controladores de projeto, a lógica da aplicação web

  • i018n - Arquivos de tradução para os idiomas suportados

  • Lib - Funções e classes utilitárias do python

  • Model - Modelos de banco de dados

  • Public Static Files - CSS, JavaScript e imagens

  • Templates - Templates expostos por nossos controladores.

  • Tests - O conjunto de testes realizados.

  • Websetup - Funções para executar na configuração do aplicativo.

Como instalar um projeto

Este projeto agora precisa ser instalado. UMAsetup.pyjá é fornecido no diretório base do projeto. As dependências do projeto são instaladas quando este script é executado.

Python setup.py develop

Por padrão, as seguintes dependências são instaladas no momento da configuração do projeto -

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

Após a instalação, comece a servir o projeto no servidor de desenvolvimento emitindo o seguinte comando no shell -

Gearbox serve –reload –debug

Siga o comando mencionado acima para servir a um projeto de exemplo pré-construído. Abrirhttp://localhost:8080no navegador. Este aplicativo de amostra pronto fornece uma breve introdução sobre a própria estrutura do TurboGears.

Neste projeto Hello, o controlador padrão é criado no diretório de controladores como Hello/hello/controllers.root.py. Deixe-nosmodify root.py com o seguinte 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"

Quando um aplicativo básico de trabalho estiver pronto, mais visualizações podem ser adicionadas à classe do controlador. NoMycontroller classe acima, um novo método sayHello()Está adicionado. o@expose() decorador anexa /sayHelloURL para ele. Esta função foi projetada para aceitar um nome como parâmetro do URL.

Depois de iniciar o servidor por meio do comando 'caixa de engrenagens servir', http://localhost:8080. A mensagem Hello World será exibida no navegador, mesmo se os seguintes URLs forem inseridos -

http://localhost:8080/

http://localhost:8080/index

Todos esses URLs são mapeados para RootController.index()método. Esta classe também tem_default()método que será chamado, sempre que um URL não for mapeado para qualquer função específica. A resposta ao URL é mapeada para uma função pelo decorador @expose ().

É possível enviar um parâmetro para uma função exposta da URL. A função a seguir lê o parâmetro de nome do URL.

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

A seguinte saída será vista no navegador como uma resposta ao URL - http://localhost:8080/?name=MVL

Hello MVL

O TurboGears mapeia automaticamente os parâmetros de URL para argumentos de função. Nossa classe RootController é herdada de BaseController. Isso é definido comobase.py no lib folder de aplicação.

Seu código é o seguinte -

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__ despacha para o método do controlador para o qual a solicitação é roteada.