Warning: Undefined array key "tbm_guide_level" in /data/websites/htmlit/web/app/themes/htmlit/src/ViewModel/Post/Templates/SingleGuide.php on line 113

Warning: Trying to access array offset on value of type null in /data/websites/htmlit/web/app/themes/htmlit/src/ViewModel/Post/Templates/SingleGuide.php on line 113

Warning: Undefined array key "tbm_guide_level" in /data/websites/htmlit/web/app/themes/htmlit/src/ViewModel/Post/Templates/SingleGuide.php on line 113

Warning: Trying to access array offset on value of type null in /data/websites/htmlit/web/app/themes/htmlit/src/ViewModel/Post/Templates/SingleGuide.php on line 113

Warning: Undefined array key "tbm_guide_level" in /data/websites/htmlit/web/app/themes/htmlit/src/ViewModel/Post/Templates/SingleGuide.php on line 113

Warning: Trying to access array offset on value of type null in /data/websites/htmlit/web/app/themes/htmlit/src/ViewModel/Post/Templates/SingleGuide.php on line 113
TurboGears: cos'è e come funziona il framework per Python | HTML.it
Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

TurboGears: il web framework per Python

Introduzione a TurboGears, framework per lo sviluppo di applicazioni web sfruttando tutti i vantaggi del linguaggio di programmazione Python.
Introduzione a TurboGears, framework per lo sviluppo di applicazioni web sfruttando tutti i vantaggi del linguaggio di programmazione Python.
Link copiato negli appunti

Il panorama di Python è popolato da una moltitudine di soluzioni per lo sviluppo web.

Django è sicuramente il framework più diffuso, anche grazie alla moltitudine di moduli già pronti che offre,
ma a volte può essere poco performante o macchinoso quando si ha l'esigenza di soluzioni
fortemente personalizzate.

Nel corso degli anni sono nati decine di web framework che hanno
cercato di offrire soluzioni più flessibili, performanti o efficaci di Django in specifici
casi d'uso. Tra questo, uno dei più interessanti è TurboGears, che sarà l'oggetto di questo approfondimento.

Introduzione

La semplicità, la rapidità, ma specialmente la qualità dell'esperienza di sviluppo sono tra i principali obiettivi del team di sviluppo di TurboGears. Questo framework, inoltre, presenta alcune peculiarità che lo rendono particolarmente interessante:

  • Un sistema di dispatch
  • Un template engine
  • Un potente sistema a Widget
  • Supporto integrato a SQLAlchemy e MongoDB
  • Un Admin autogenerato per gestire tutti i dati della vostra applicazione web.
  • Una struttura a componenti
  • La possibilità di essere usato sia come framework full-stack micro-framework

Il progetto nasce nel 2005 da un'idea di Kevin Dangoor, ed attualmente è giunto alla release 2.4,
compatibile con Python 2.7 e Python >=3.4.

Installazione

Come per la maggior parte delle librerie e framework Python, TurboGears può essere facilmente installato con pip:

$ pip install tg.devtools

Se non ci sono stati imprevisti, al termine dell'esecuzione dovremmo aver installato TurboGears e tutte le sue dipendenze.

Creazione di una Applicazione Web

Possiamo creare un nuovo progetto TurboGears sfruttando il seguente comando:

$ gearbox quickstart nomeprogetto

Ciò creerà una applicazione Python che potrà poi essere installata con:

$ cd nomeprogetto
$ pip install -e .

e poi avviata con:

$ gearbox serve --reload

A questo punto, connettendosi all'indirizzo http://localhost:8080/ da un browser, verremo accolti dalla nostra applicazione web.

Se poi vogliamo anche poterci autenticare http://localhost:8080/admin

$ gearbox setup-app

Per impostazione di default, in modalità sviluppo TurboGears si appoggia ad un database locale SQLite
Quindi non sarà necessario installare o configurare alcun DBMS come MySQL PostgreSQL

Il framework

Object Dispatch

Per capire il funzionamento delle applicazioni web TurboGears, è importante capire il funzionamento della metodologia con cui le richieste vengono indirizzate ai controller.
La maggior parte dei framework, infatti, utilizza delle regular expression per effettuare il mapping delle URL a metodi. In TurboGears, invece, le richieste vengono distribuite con un sistema chiamato Object Dispatch.

Con questo meccanismo, la radice del sito è considerata l'oggetto RootController, dichiarato nel file root.py all'interno del modulo dei controller.
Ogni richiesta viene divisa sulla base del percorso dell'URL ed a partire da / viene elaborata cercando eventuali figli del RootController che siano in grado di soddisfarla.

Se, ad esempio, effettuassimo una richiesta HTTP verso http://localhost:8080/about about RootController
mentre http://localhost:8080/secc/some_where
in quanto instanziato come secc RootController

class RootController(BaseController):
    secc = SecureController()
    @expose('prova.templates.about')
    def about(self):
        """Handle the 'about' page."""
        return dict(page='about')

Questo sistema di dispatch è considerato uno dei principali vantaggi del framework,
in quanto permette di prototipizzare rapidamente applicazioni web
Inoltre, spinge ad una coesione molto ordinata delle funzionalità, permettendo a qualsiasi programmatore che collabori
ad un progetto già avviato di capire senza sforzo dove è il codice che implementa una specifica parte del sito, e modificarlo.

Come in ogni framework MVC modelli controller viste

Validated Template Engine

L'altra peculiarità di TurboGears è di essere l'unico framework a larga difussione ad aver
scelto un template engine in grado di comprendere realmente la struttura dei template.

Questo, nel tempo, ha portato il team del progetto a sviluppare il suo proprio template engine
di nome Kajiki, che è in grado di offrire performance
comparabili a quelle di engine come Jinja, ma che è in grado di offrire delle garanzie in più.

I template sviluppati in Kajiki sono file XHTML con degli attributi specifici che
consentono il controllo di flusso:

<html>
    <head><title>$title</title></head>
    <body>
        <h1>$title</h1>
        <ul>
            <li py:for="x in range(repetitions)">
                This is item ${x}
            </li>
        </ul>
    </body>
</html>

Ciò permette a Kajiki di validare i template e riportare errori nell'HTML (come tag malformati,
o non chiusi) e di implementare funzionalità come l'escaping automatico dei dati inseriti e la
traduzione automatica del testo presente nel template.

Inoltre, trattandosi di template XHTML, qualsiasi editor WYSIWYG sarà in grado di visualizzare
i nostri template ed editarli.

Per Approfondire

Chi fosse interessato a sperimentare con TurboGears ed approfondire ulteriormente le sue potenzialità,
può fare riferimento alla documentazione
ed eventualmente seguire i tutorial disponibili sul sito.

Ti consigliamo anche