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.