TurboGears - Bağımlılıklar
Bir TurboGears projesi aşağıdaki dizinleri içerir -
Config - Proje kurulumu ve yapılandırmasının dayandığı yer
Controllers - Tüm proje denetleyicileri, web uygulamasının mantığı
i018n - Desteklenen diller için çeviri dosyaları
Lib - Python işlevleri ve sınıfları yardımcı olur
Model - Veritabanı modelleri
Public Static Files - CSS, JavaScript ve resimler
Templates - Denetleyicilerimiz tarafından gösterilen şablonlar.
Tests - Yapılan Testler seti.
Websetup - Uygulama kurulumunda yürütülecek işlevler.
Proje nasıl kurulur
Bu projenin şimdi yüklenmesi gerekiyor. Birsetup.pyzaten projenin temel dizininde sağlanmıştır. Bu komut dosyası yürütüldüğünde proje bağımlılıkları yüklenir.
Python setup.py develop
Varsayılan olarak, proje kurulumu sırasında aşağıdaki bağımlılıklar yüklenir -
- Beaker
- Genshi
- zope.sqlalchemy
- sqlalchemy
- alembic
- repoze.who
- tw2.forms
- tgext.admin ≥ 0.6.1
- WebHelpers2
- babel
Kurulumdan sonra, kabukta aşağıdaki komutu vererek projeyi geliştirme sunucusunda sunmaya başlayın -
Gearbox serve –reload –debug
Önceden oluşturulmuş bir örnek projeye hizmet etmek için yukarıda belirtilen komutu izleyin. Açıkhttp://localhost:8080tarayıcıda. Bu hazır örnek uygulama, TurboGears çerçevesinin kendisi hakkında kısa bir giriş sağlar.
Bu Hello projesinde, varsayılan denetleyici denetleyiciler dizininde şu şekilde oluşturulur: Hello/hello/controllers.root.py. Hadimodify root.py aşağıdaki kodla -
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"
Temel bir çalışan uygulama hazır olduğunda, denetleyici sınıfına daha fazla görünüm eklenebilir. İçindeMycontroller yukarıdaki sınıf, yeni bir yöntem sayHello()eklendi. @expose() dekoratör ekler /sayHelloURL'si. Bu işlev, URL'den parametre olarak bir adı kabul edecek şekilde tasarlanmıştır.
Sunucuyu 'dişli kutusu servis' komutu ile başlattıktan sonra, http://localhost:8080. Aşağıdaki URL'ler girilse bile tarayıcıda Merhaba Dünya mesajı görüntülenecektir -
http://localhost:8080/
http://localhost:8080/index
Tüm bu URL'ler, RootController.index()yöntem. Bu sınıfta ayrıca_default()Bir URL herhangi bir belirli işlevle eşlenmediğinde çağrılacak yöntem. URL'ye yanıt, @expose () dekoratörü tarafından bir işleve eşlenir.
URL'den açık bir işleve bir parametre göndermek mümkündür. Aşağıdaki işlev, ad parametresini URL'den okur.
@expose()
def sayHello(self, name):
return '<h3>Hello %s</h3>' %name
Aşağıdaki çıktı, tarayıcıda URL'ye yanıt olarak görülecektir - http://localhost:8080/?name=MVL
Hello MVL
TurboGears, URL parametrelerini işlev bağımsız değişkenleriyle otomatik olarak eşler. RootController sınıfımız BaseController'dan miras alınır. Bu şu şekilde tanımlanır:base.py içinde lib folder uygulama.
Kodu aşağıdaki gibidir -
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__ isteğin yönlendirildiği Controller yöntemine gönderir.