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.