Quando e Perchè usare Django?

Alla scoperta del web framework più in voga nel mondo Python di oggi.

Dopo qualche mese di utilizzo in progetti reali, ecco il mio primo post su Django per come lo conosco oggi, che molto devo ancora imparare.. :)

Alla Plone Conference di Bristol e anche prima ho avuto modo di parlare con diversi amici sull'opportunità della scelta di usare Django nelle situazioni in cui Plone risulta "svantaggioso", e devo dire di non aver convinto tutti.

Cercherò di ribadire qui alcune di quelle motivazioni, nella maniera più sintetica possibile.

Django come Plone

In che senso? Certo non in termini di tecnologia, dato che confrontare Django e Plone sarebbe come confrontare un foglio di calcolo con un DBMS.

Nonostante ciò, per me Django è come Plone, se penso alla massa critica delle comunità che i due progetti hanno saputo raccogliere.

Conosco bene l'ecosistema Plone, basato su una comunità reale, capace di produrre molte delle cose di cui ho bisogno per le mie applicazioni Plone, di mantenere una direzione condivisa del progetto, di far evolvere Plone in direzioni per me interessanti e di valore.

Meno bene conosco la comunità Django, ma ho la percezione che, seppur diversa, una comunità esista.

E ho pure "scoperto" che Django, come Plone, è proprietà di una Fondazione appositamente istituita.

Come ho scoperto che migliaia di persone si sono registrate sul sito del "popolo di Django", e da poco anche io: http://djangopeople.net/miziodel/.

Ed esiste anche una Django Conference, certo non ancora ai livelli delle Conference Plone, ma è comunque significativo che ci sia.

Web Framework, ma non solo..

Django è un web framework, il che la dice lunga sulla sua "basicità", e tuttavia è dotato di un seguito capace di produrre progetti interessanti che lo completano a livello applicativo.

Un paio di esempi concreti? Per i nostri clienti stiamo lavorando molto sul versante e-commerce + community, e pensare di fare quel che serve basandolo su Plone mi fa tremare le gambe: molto dello sviluppo sarebbe sulle nostre sole spalle.

Anche basarlo su Django mi lascerebbe piuttosto attonito:

secondo me, costruire una community e ancor più un sistema di e-commerce che si possano considerare codice riusabile e flessibile, e al tempo stesso robusto e potente è una chimera, se si parte da soli dalle fondamenta.

Lungo è il tempo richiesto dallo sviluppo del codice, ma soprattutto lunghissimo è il tempo necessario ad accumulare l'esperienza che suggerisca i modi migliori di modellare le soluzioni più corrette.

La comunità Django ha permesso a un paio di progetti di acquisire forza, e posso dire che ci sono stati molto utili come base per le nostre applicazioni: Pinax e Satchmo.

Commercio Elettronico con Satchmo

Satchmo è un framework configurabile per costruire negozi online. Ha oltre 3 anni di vita vissuta in decine di casi reali, e racchiude una serie di problematiche già risolte con cui vestire le proprie esigenze.

Chiaramente si tratta di codice Open Source (rilasciato con licenza BSD), con documentazione aggiornata  e un buon manipolo di contributori.

Certo, abbiamo dovuto adattarlo alle nostre esigenze, ma ci sono vari modi per agire rapidamente e senza fare danni. Vi rimando a futuri post per qualche dettaglio.

Restano degli ottimi esiti sul fronte del risultato finale, soprattutto se paragonato al lavoro che ci avrebbe richiesto la stessa soluzione basata sul solo Plone e sulle varie estensioni che aggiungono a Plone quel sapore di ecommerce che non ci bastava.

Community in stile Facebook con Pinax

Pinax è una distribuzione di pacchetti Django orientati alla creazione di un portale Community, una sorta di piattaforma su cui costruire i propri servizi, attivando e manipolando i mattoncini di base disponibili.

Tra le varie funzionalità troviamo registrazione utenti, validazione mail, autenticazione autonoma o basata su server openID, ma anche Blog, Contenuti, Gruppi di utenti e tanto altro.

Una cosa che va capita è questo fatto di non avere un prodotto, ma una suite di pacchetti: Pinax offre una serie di progetti pre-definiti, che possono essere istanziati come base di partenza per la propria applicazione in modo rapidissimo.

Di fatto, anche Pinax è Open Source (rilasciato con licenza MIT), con la sua documentazione debitamente mantenuta, e un discreto numero di contributori.

Pinax si è rivelato a sua volta una bella scoperta, utilissimo a non reinventare l'acqua calda e a basarsi su pattern condivisi e abbastanza flessibili in ambito Django.

Il tempo risparmiato non è quantificabile, ma nel nostro progetto attualmente in test finale, la parte community è stata messa in piedi nel giro di ben poco tempo, se rapportato a quanto avrei impiegato con Plone: valuterete da soli con quali risultati a sistema online.

Qualche Considerazione

Il mondo Django è ancora molto nuovo per me, e devo continuare l'esplorazione per capire quali altre bellezze offre per i suoi frequentatori. Posso però ribadire sin da ora alcune questioni:

  • se hai bisogno di Plone, usa Plone! non c'e' ancora modo di arrivare ai suoi livelli in ambito CMS. ;)
  • Se inizi a lavorare con Django, e sei abituato a realizzare progetti Plone, preparati a usare modi "programmatici" di fare le cose, il concetto di "configurazione" è molto scarno.
  • Django ha delle sue tipicità molto apprezzabili: ne parlerò nei prossimi post!
  • Django è pensato per sviluppatori! non c'è molto spazio per chi sviluppatore non è: o ci diventa, o raggiungerà presto i suoi limiti.

Share this on

Share |

On same topics

Commenti

comments powered by Disqus