Abarone.it Logo

Django - Introduzione

Introduzione al Framework innovativo

Adrian Holovaty, uno degli ideatori e autori di Django assieme a Simon Willison e Jacob
Kaplan-Moss, è anche un appassionato di musica; se volete, potete vederlo all’opera su
YouTube mentre suona la chitarra, all’indirizzo http://www.youtube.com/adrianholovaty.
In particolare Adrian è appassionato di gipsy jazz (musica zingara), un genere che è stato
reso famoso da un grandissimo chitarrista: Django Reinhardt (Figura I.1). La storia di
Reinhardt è avvincente anche per via di un grave incidente che subì a diciotto anni:
un incendio distrusse la sua roulotte, rendendo quasi inutilizzabili le ultime due dita
della sua mano sinistra. Trovandosi in una situazione che avrebbe interrotto la carriera
di qualunque altro chitarrista, Django sviluppò invece una tecnica rivoluzionaria che gli
permise comunque di suonare divinamente la sua chitarra.
Adrian ha scelto il nome Django per la sua passione per la musica gipsy. A me però piace
pensare che un altro motivo sia anche il fatto che, come questo straordinario musicista
riuscì a fare il suo lavoro con il 40% in meno delle dita della mano sinistra, noi possiamo, grazie a Django, fare il nostro lavoro nel 40% in meno del tempo. :-)

Requisito fondamentale per poter programmare Django è conoscere Python, ma vediamo se ne vale la pena evidenziandone alcuni grandi lavori fatti con questo potente linguaggio.
Nell’eventualità che non lo conosciate e che stiate decidendo se vale la pena o meno di
impararlo per poter usare Django, provo a stuzzicare il vostro appetito (ricordate: questo
è un libro di cucina).
La prima domanda delle FAQ (Frequently Asked Questions, le domande più frequenti) sul
sito ufficiale di Python http://www.python.org è “Cos’è Python?”.
Leggiamo assieme la risposta: “Python è un linguaggio di programmazione interpretato,
interattivo e orientato agli oggetti. Incorpora al suo interno moduli, eccezioni, tipizzazione
dinamica, tipi di dato di altissimo livello e classi. Python combina una eccezionale potenza
con una sintassi estremamente chiara. Ha interfacce verso molte chiamate di sistema,
oltre che verso diversi ambienti grafici, ed è estendibile in C e in C++. È inoltre usabile
come linguaggio di configurazione e di estensione per le applicazioni che richiedono
un’interfaccia programmabile. Da ultimo, Python è portabile: può girare su molte varianti
di UNIX, sul Mac, sui PC con MS-DOS, Windows, Windows NT e OS/2”.
A chi dobbiamo una meraviglia del genere? A un geniale signore olandese che risponde
al nome di Guido Van Rossum. Curiosamente Guido non è la traduzione italiana del
suo nome, è proprio il suo nome originale in olandese.
Guido, nel lontano Natale del 1989, invece di passare le sue vacanze a decorare l’albero,
decise di scrivere un linguaggio che correggesse la maggior parte dei difetti, se non tutti,
che secondo lui erano presenti negli altri linguaggi.
Per nostra fortuna Guido Van Rossum era, ed è tuttora, un grande esperto di linguaggi di
programmazione e questo ha fatto sì che fin da subito la sua creatura avesse un notevole
successo, dapprima tra i colleghi del centro di ricerca dove lavorava in quel periodo e
poi, dopo la pubblicazione su USENET nel febbraio del 1991, in tutto il mondo.
Una domanda che spesso sento fare da chi non lo conosce è: “Ma c’è qualcuno che usa
Python in ambito professionale?”.
La risposta non può che essere “Sì!”. IBM, Google, Sun, Hewlett Packard, Industrial Light
& Magic (quelli che hanno fatto Guerre Stellari), la NASA (quelli che sono andati sulla
Luna); perfino in Microsoft usano Python. Non ci credete? Provate a digitare in Google
site:microsoft.com python.
In questo momento ci sono 9780 risultati e uno di questi si intitola Open Source at Microsoft
e si occupa di IronPython, la versione di Python per .NET.
Forse sarebbe più corretto domandarsi chi ancora non lo usa...

Ma cos'è Django? "Django è un Web framework Python di alto livello che incoraggia la rapidità di sviluppo ed una progettazione pulita e orientata alla praticità."
Questa è la definizione (miseramente tradotta da me) di Django che viene data sul sito ufficiale e sebbene lo abbia iniziato a studiare da poco vi assicuro che mantiene quello che promette.

Su che principio si basa Django?
La cosa che più mi è piaciuta di Django è che rende quasi obbligatoria l'applicazione del principio DRY (Dont Repeat Yourself) che spiego meglio in questo post . In sostanza applicando questo principio si cerca di evitare la duplicazione dell'informazione per ridurre la possibilità di errori ed aumentare l'indipendenza tra gli elementi di un progetto.

Dove si manifesta il principio DRY?
Questo principio è applicato in tutto il framework dall'inizio alla fine rendendo quasi impossibili inutili e dannose ripetizioni. Modello vista e template trattano infatti 3 aspetti ortogonali e mai in contatto tra loro del framework.
Unico punto di contatto (dove sarebbero possibili ripetizioni) che ho trovato finora è tra la definizione degli URL ed il modello ma con un po' di buon senso è facile evitare duplicazioni.

Come è fatto Django?
Di seguito una breve carrellata delle principali caratteristiche di questo framework:
Object-relational mapper (ORM):
Dà la possibilità di mappare gli oggetti su Database relazionali. In parole povere significa che scrivendo delle semplici classi Python si ottiene un databse ed un'interfaccia intuitiva ma molto potente verso il database stesso. Resta comunque la possibilità di scrivere l'SQL per i più affezionati.

Area di Amministrazione generata automaticamente:
Django mette a disposizione una semplice ma efficacissima area amministrativa che ad ogni campo del modello associa un'interfaccia semplice e veloce di inserimento e modifica dei dati.
Sistema di creazione degli URL semplice ed elegante:
Con semplici espresioni regolari si associano gli URL a specifiche viste che li trattano separatamente.
Sistema per la gestione della Cache:
Si può utilizzare memcached o un qualsiasi altro framework di caching. E' semplice impostare granularità del caching.

Internazionalizzazione:
Django fornisce il pieno supporto per applicazioni multi-lingua, permettendoti di specificare stringhe di traduzione e mettendo a disposizione funzionalità specifiche per ogni lingua.

In conclusione:
Un gran bel mix di ottime idee improntate alla massima semplicità porta Django ad essere uno dei framework più promettenti del prossimo futuro. Aspettando la release 1.0 e le API definitive vi invito a scoprire questa creatura che i suoi sviluppatori definiscono così: Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design.

barone.antonio@libero.it