TurboGears - zależności
Projekt TurboGears zawiera następujące katalogi -
Config - Gdzie zależy konfiguracja i konfiguracja projektu
Controllers - Wszyscy kontrolerzy projektu, logika aplikacji internetowej
i018n - Pliki tłumaczeń dla obsługiwanych języków
Lib - Funkcje i klasy narzędzi w języku Python
Model - Modele baz danych
Public Static Files - CSS, JavaScript i obrazy
Templates - Szablony ujawnione przez naszych kontrolerów.
Tests - Zestaw wykonanych testów.
Websetup - Funkcje do wykonania podczas konfiguracji aplikacji.
Jak zainstalować projekt
Ten projekt należy teraz zainstalować. ZAsetup.pyjest już udostępniony w katalogu podstawowym projektu. Zależności projektu są instalowane po wykonaniu tego skryptu.
Python setup.py develop
Domyślnie podczas konfigurowania projektu są instalowane następujące zależności -
- Beaker
- Genshi
- zope.sqlalchemy
- sqlalchemy
- alembic
- repoze.who
- tw2.forms
- tgext.admin ≥ 0.6.1
- WebHelpers2
- babel
Po instalacji rozpocznij udostępnianie projektu na serwerze deweloperskim, wydając następujące polecenie w powłoce -
Gearbox serve –reload –debug
Postępuj zgodnie z powyższym poleceniem, aby wyświetlić gotowy przykładowy projekt. otwartyhttp://localhost:8080w wyszukiwarce. Ta gotowa przykładowa aplikacja zawiera krótkie wprowadzenie do samego frameworka TurboGears.
W tym projekcie Hello, domyślny kontroler jest tworzony w katalogu controllers jako Hello/hello/controllers.root.py. Pozwól nammodify root.py z następującym kodem -
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"
Gdy podstawowa działająca aplikacja jest gotowa, można dodać więcej widoków do klasy kontrolera. wMycontroller klasa powyżej, nowa metoda sayHello()jest dodany. Plik@expose() dekorator dołącza /sayHelloURL do niego. Ta funkcja została zaprojektowana tak, aby akceptować nazwę jako parametr z adresu URL.
Po uruchomieniu serwera za pomocą komendy „Gearbox Serv” http://localhost:8080. Wiadomość Hello World zostanie wyświetlona w przeglądarce, nawet jeśli zostaną wprowadzone następujące adresy URL -
http://localhost:8080/
http://localhost:8080/index
Wszystkie te adresy URL są mapowane RootController.index()metoda. Ta klasa również ma_default()metoda, która zostanie wywołana, gdy adres URL nie jest mapowany do żadnej określonej funkcji. Odpowiedź na adres URL jest odwzorowywana na funkcję przez dekorator @expose ().
Możliwe jest przesłanie parametru do udostępnionej funkcji z adresu URL. Poniższa funkcja odczytuje parametr name z adresu URL.
@expose()
def sayHello(self, name):
return '<h3>Hello %s</h3>' %name
Następujące dane wyjściowe będą widoczne w przeglądarce jako odpowiedź na adres URL - http://localhost:8080/?name=MVL
Hello MVL
TurboGears automatycznie mapuje parametry adresu URL na argumenty funkcji. Nasza klasa RootController jest dziedziczona z BaseController. Jest to zdefiniowane jakobase.py w lib folder podaniowy.
Jego kod jest następujący -
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__ wysyła do metody kontrolera, do której kierowane jest żądanie.