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.