TurboGears - Dependensi

Proyek TurboGears berisi direktori berikut -

  • Config - Di mana pengaturan dan konfigurasi proyek bergantung

  • Controllers - Semua pengontrol proyek, logika aplikasi web

  • i018n - File terjemahan untuk bahasa yang didukung

  • Lib - Fungsi dan kelas utilitas python

  • Model - Model database

  • Public Static Files - CSS, JavaScript, dan gambar

  • Templates - Template diekspos oleh pengontrol kami.

  • Tests - Set Tes selesai.

  • Websetup - Fungsi untuk dieksekusi pada pengaturan aplikasi.

Cara Menginstal proyek

Proyek ini sekarang perlu dipasang. SEBUAHsetup.pysudah tersedia di direktori dasar proyek. Dependensi proyek terinstal ketika skrip ini dijalankan.

Python setup.py develop

Secara default, dependensi berikut diinstal pada saat penyiapan proyek -

  • Beaker
  • Genshi
  • zope.sqlalchemy
  • sqlalchemy
  • alembic
  • repoze.who
  • tw2.forms
  • tgext.admin ≥ 0.6.1
  • WebHelpers2
  • babel

Setelah instalasi, mulai melayani proyek di server pengembangan dengan mengeluarkan perintah berikut di shell -

Gearbox serve –reload –debug

Ikuti perintah yang disebutkan di atas untuk melayani proyek contoh yang dibuat sebelumnya. Bukahttp://localhost:8080di browser. Contoh aplikasi readymade ini memberikan pengantar singkat tentang framework TurboGears itu sendiri.

Dalam proyek Hello ini, pengontrol default dibuat di direktori pengontrol sebagai Hello/hello/controllers.root.py. Biarkan kamimodify root.py dengan kode berikut -

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"

Setelah aplikasi kerja dasar siap, lebih banyak tampilan dapat ditambahkan di kelas pengontrol. DalamMycontroller kelas di atas, metode baru sayHello()telah ditambahkan. Itu@expose() dekorator menempel /sayHelloURL ke sana. Fungsi ini dirancang untuk menerima nama sebagai parameter dari URL.

Setelah memulai server melalui perintah 'gearbox serve', http://localhost:8080. Pesan Hello World akan ditampilkan di browser, meskipun URL berikut dimasukkan -

http://localhost:8080/

http://localhost:8080/index

Semua URL ini dipetakan ke RootController.index()metode. Kelas ini juga punya_default()metode yang akan dipanggil, setiap kali URL tidak dipetakan ke fungsi tertentu. Respons ke URL dipetakan ke fungsi oleh dekorator @expose ().

Anda dapat mengirim parameter ke fungsi yang terekspos dari URL. Fungsi berikut membaca parameter nama dari URL.

@expose()
def sayHello(self, name):
   return '<h3>Hello %s</h3>' %name

Output berikut akan terlihat di browser sebagai respons terhadap URL - http://localhost:8080/?name=MVL

Hello MVL

TurboGears secara otomatis memetakan parameter URL ke argumen fungsi. Kelas RootController kami diwarisi dari BaseController. Ini didefinisikan sebagaibase.py dalam lib folder aplikasi.

Kodenya adalah sebagai berikut -

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__ mengirimkan ke metode Kontroler tempat permintaan diarahkan.