Negli ultimi anni, tra i framework per lo sviluppo di applicazioni orientate al web, si è fatto un gran parlare di Django che sembra aver fatto breccia nel cuore e nella mente di molti sviluppatori per svariate ragioni. Premesso il fatto che se Python è stato scelto da Google come unico linguaggio se volete che le vostre applicazioni possano essere ospitate sui web server dell’azienda di Mountain View tramite Google AppEngine, e che Django è l’unico framework per cui viene fornito un specie di supporto un motivo ci sarà, io sinceramente trovo ancora un pò scomodo e non vantaggioso come molti sostengono in giro, sviluppare applicazioni web con questo framework MVC.
Ecco sostanzialmente le ragioni per cui non trovo Django così fantastico come si dice in giro.
Installazione tutt’altro che semplice
Il primo grande ostacolo che si trova è proprio l’installazione che è tutt’altro che elementare sia in locale (su Windows e su Mac) che in remoto sul vostro web server. Se infatti siete degli amanti di MAMP, WAMP, XAMMP e simili che fino ad ora vi hanno permesso di testare in locale i vostri script in PHP e MySQL, troverete non poche difficoltà nell’installazione non tanto di Django quanto del modulo di MySQL per Python e sinceramente senza l’appoggio di un database vi potete divertire ben poco a sviluppare applicazioni che abbiano un senso.
Passando all’installazione lato server i problemi non sono minori, anzi. Se non avete la possibilità di accedere via ssh al vostro spazio web potete anche sognarvi di usare Django per le vostre applicazioni web. Se per esempio siete su Dreamhost e quindi avete questa possibilità, l’installazione è tutt’altro che semplice come potete leggere nel wiki. L’ideale sarebbe quindi avere un VPS (Virtual Private Server) se non addirittura un server dedicato, ma non tutti purtroppo se lo possono permettere.
Documentazione tutta in Inglese
Se siete degli sviluppatori o pseudo tali e non avete una buona conoscenza dell’inglese (almeno quello volgarmente detto tecnico) vi consiglio di darvi all’ippica perchè siete tagliati fuori. In ogni caso anche se siete poliglotti e l’inglese per voi non è un problema, scommetto che avere della documentazione scritta in italiano non vi dispiacerebbe vero? Ecco un’altra nota dolente: la documentazione ufficiale è tutta in inglese.
Il Django book è davvero un’ottima risorsa, però almeno all’inizio per prendere confidenza con il nuovo ambiente di sviluppo leggere qualcosa in italiano non farebbe affatto male. Purtroppo a parte qualche tutorial e qualche guida su come risolvere i problemi più comuni, in italiano non si trova praticamente niente.
Vi consiglio pertanto un bel corso di inglese prima di iniziare.
Hosting difficile da trovare
Come detto in precedenza per installare Django ci vuole per forza di cose un accesso SSH, quindi non potrete ospitare i vostri capolavori su un qualsiasi spazio web. Specialmente in Italia, se avete un normalissimo contratto di hosting, magari a basso prezzo, non potrete installare il framework MVC (che io sappia a parte UnBit non ci sono altri provider che offrono normali servizi di hosting Django-ready). Quindi o vi toccherà emigrare all’estero presso Dreamhost o altri celebri provider che fanno dell’overselling il loro cavallo di battaglia oppure dovrete seriamente pensare di mettere mano al portafogli e prendervi un VPS o se proprio potete spendere un bel server dedicato.
Performance eccezionali?
Ok, ma per la vostra idea geniale ci vuole una realizzazione efficientissima altrimenti la vostra applicazione web 2.0 sarà lentissima quando milioni di persone la utilizzeranno contemporaneamente: ecco perchè vi serve Django!!!
A me la storia delle prestazioni fantasmagoriche di Django non convince troppo. Rispetto a PHP sarà pure più efficiente ed ottimizzato… ma come potete leggere nei punti sopra, quasi sempre le applicazioni sviluppate con Django sono ospitate o su VPS o su server dedicati che magari usano Lighttpd se non LiteSpeed impostazioni di cache a livello di MySQL che rendono le query verso il database, tutto questo sommato alla possibilità di cachare le pagine tramite Django le molto rapide ecc ecc…
Provate ad hostare le vostre applicazioni fatte in PHP (tanto per fare un esempio) su un VPS o un server dedicato come sopra e… se non programmate con i piedi le prestazioni non saranno molto differenti.
CodeIgniter & Co.
Ok l’ultimo mito che è rimasto da sfatare è la semplicità con cui si programma in Django che non è paragonabile a nessun altro framework. Quando si guarda uno screencast e le cose le fa un altro è tutto semplice. Se poi le cose sono degli esempietti stupidi sono ancora più semplici.
Django è un framework MVC (Model-View-Controller) come ce ne sono a decine in giro per i linguaggi più svariati. Se non sapete da dove iniziare la vostra applicazione, il fatto che avete a disposizione Django non vi aiuterà molto. Rispetto a framework pesanti come Ruby On Rails o Symphony ha sicuramente il suo perchè e sicuramente vi aiuterà a sviluppare applicazioni più snelle e più veloci. Sempre se riuscite ad installarlo, sempre se avete dove installarlo, sempre se riuscite a sviluppare in locale e poi mettere tutto online ecc ecc
Ora dico io: ci sono degli ottimi framework MVC come CodeIgniter che vi offrono la stessa semplicità di sviluppo, più o meno le stesse basi da cui partire ma non dovrete diventare matti nel trovare una soluzione per installarlo in locale piuttosto che su un servizio di hosting che non prosciughi le vostre tasche.
Perchè andarvi a complicarvi la vita con Django?
Forse adesso non parlo con cognizione di causa perchè mi ha fatto diventare matto per installarlo in locale e poi in remoto e non sarò riuscito ancora ad apprezzarne i vantaggi… però a tutt’oggi definirlo il Visual Basic per il Web mi sembra un paragone abbastanza pittoresco. D’altronde Django solo per installarlo necessita di 3 giorni di ferie: io Visual Basic lo ricordo di molto più semplice utilizzo o sbaglio?
Spero di avere qualche sostenitore. Voi come la pensate?
30 risposte su “5 Motivi Per Cui Django Stenta A Diffondersi”
I punti contestati mi paiono un po’ deboli sinceramente…Piuttosto io ne ho individuato, arrivando da CakePHP, altri che mi hanno fatto storcere un po’ il naso:
– Gestione dei files statici (media files) un po’ ostica.
– Richiesta di uso massiccio di path assoluti (un po’ scomoda nel passaggio tra locale e produzione, o fra work-machines differenti).
– Modularizzazione: ok. Ma perchè i templates devono stare tutti in un’unica cartella (genitore)?
– Gestione di connessioni multiple a database differenti mancante (o sbaglio?).
Condivido forse il 10% di quello che hai scritto… Django è estremamente veloce e potente. Prova a fare in PHP un’applicazione web di monitoraggio in real-time di sensori o un’applicazione di Business Intelligence, tanto per fare 2 esempi a caso. PHP lo conosco benissimo e non è un linguaggio completo come Python. Di framework in PHP ce ne sono svariati, ma vedi quante query esegue CakePHP o Joomla per caricare un oggetto e poi mi fai sapere.
Oltretutto Django ha una rapidità di apprendimento e di sviluppo sorprendente, che la documentazione sia praticamente solo in inglese per me non è un problema, ma non dovrebbe esserlo nemmeno per un qualsiasi progettista o sviluppatore. Siamo noi italiani che affanniamo sulla lingua straniera, quindi il problema è solo nostro, anzi, di chi non lo sa.
L’installazione è estremamente semplice, se si ha installato Python ci vogliono pochi minuti veramente!
La cosa che posso condividere è la mancanza di hosting italiani, ma comunque ce ne sono veramente tanti europei ai quali affidarsi senza troppi problemi.
Per concludere, ho rifatto un’applicazione in PHP di circa 250 file con Django, appena 40 file e 20 giorni di lavoro!
Non ho parole,
non conoscevo python,
non conoscevo Django,
mi è stato chiesto di mettere su un sito il più presto possibile e mi è stato detto di farlo con Django.
In due giorni era su, il cliente era stracontento.
Adesso dopo mesi di sviluppo, il modello (una trentina di oggetti)
sono cambiati di poco,
ti dico la mia.
1) l’installazione è banale.
2) per la produzione, l’installazione con mod_python è banale
3) un framework che ti guida a programmare senza sessione è geniale e una mano santa per le performance.
4) il sistema di template non ha ugguali
5) i sistema di URL, e il concetto di reverse è geniale e non trova ugguali
6) si possono davvere fare applicazioni pluggable
7) il disaccoppiamento è reale.
8) la rapidità di sviluppo è sconvolgetemente rapida
9) il modulo django-evolution è una ottima scommessa.
10) l’integrazione con Ajax è facilissima
11) non c’è SQL e se cambia il modello, non c’è da riscrivere le query
12) con i test ti garantisce la non regressione
insomma, è valido per le grandi aziende, è valido per le piccole è valido per il sitarello.
Credo che insegnerò a mio padre a programmare, Lui conosceva le schede perforate, ma penso che riuscirà a fare qualcosa anche con questo framework.
La facilità di apprendimento è stupefacente.
L’inglese è un problema? Io dico che non conoscerlo è un problema. Siamo programmatori giusto?
ciao
S
1) Secondo me non si può fare un’ inferenza logica di questo tipo. Hai ragione a dire che MYSQLdb è ostico da installare su Mac (lo dici a me? Ho patito le pene dell’ inferno!) Ma casomai il problema si dovrebbe spostare a rendere più user-friendly l’installazione di MYSQLdb o quantomeno mettere sul loro sito un disclaimer grosso come una casa che avvisa quale versione di mysql installare per non avere conflitti. L’utente medio, come dici tu, se ha un sistema pulito allora non avrà problemi ad installare la versione di mysql corretta. Se con “installazione di Django” intendiamo il processo che porta ad avere una versione funzionante di Django (il classico hello world) allora installare Django è facile, se intendiamo completamente full-featured allora si, Django è ostico nello sfruttare a pieno le sue potenzialità. Ultima ma non ultima cosa la fetta di utenti Mac è sicuramente più bassa di quella totale, quindi anche qui andrebbe fatto un discorso di difficoltà per sistema operativo.
2) Ok, ti do ragione, ma come si dice, il mondo è pieno di volontari traduttori 😉
3) Che la limiti di molto non vuol dire che sia impossibile hostare un progetto Django 🙂
Per la tua conclusione concordo e apprezzo, anche se l’utente medio secondo me, in questo settore è una cosa che lascia il tempo che trova.
Come dire, se sai andare in bicicletta ma non guidare accontentati di quello. Spero di essermi spiegato 😛
Ciao!
Alfredo
Si ti sei spiegato benissimo e credo di condividere le tue conclusioni visto che di per sè installare Django è semplice, il problema è il contorno.
In ultima battuta forse il mio pensiero è stato influenzato negativamente da quella corrente di pensiero che ha osanna Django come il “Visual Basic” dei framework per lo sviluppo di applicazioni orientate al web.
Il mio è stato un pò un pò uno sfogo perchè è vero che è un ottimo framework mvc ma, come affermi anche tu alla fine, la vedo un pò dura tutt’ora una diffusione su larga scala di questa soluzione per la creazione e gestione di CMS & Co.
Ciao Davide,
ti dico la mia.
1) Non trovo assolutamente che l’installazione di Django sia difficile. Si installa come un qualsiasi altro .egg
con le paroline magiche sudo python setup.py install. L’ installazione delle dipendenze di Django è altra cosa e secondo me non andrebbe accoppiata. Django si basa ad esempio su MySQLdb che risulta ostico da installare per problemi di architettura a 64 bit (parlo su Mac) ma come dare la colpa a Django? L’installazione di Django ruba il tempo di un comando da shell
2)Caro Davide, ma in un settore come questo l’inglese fa da padrone. O ti impari l’inglese o ti dai all’ ippica. Se fosse stata scritta in russo la documentazione allora ti avrei dato ragione
3)Host italiani ce ne sono pochi, ma se vai sul sito di Django o su Djangosites c’è una lista di host Django ready. Insomma, non mi pare un problema al pari di chi deve hostare altre cose tipo Drupal e via dicendo4 4 e 5) Tu critichi semmai un pattern, non un framework. Django è basato sul pattern MVC e sulla filosofia
DRY, entrambi validi strumenti di ingegneria del software.
Conclusione: Il tuo mi sembra più un attacco pretestuoso che altro. Mi sembra la voce di chi ha voluto provarlo e resosi conto che non gli piaceva ha dovuto esprimere il suo parere sul blog.
Il pare di una persona è sacrosanto, ma rimane soggettivo.
L’oggettività è che Django è un grande Framework, forse non il migliore, ma un grande.
Ciao, in bocca al lupo per il tuo sito.
Alfredo, un programmatore Django convinto
Alfredo, mi permetto di risponderti punto per punto.
1) Il fatto che Django si appoggi a MySQLdb e questo sia ostico da installare implica il fatto che per esempio Django sia difficile da installare su Mac e questa è una grossa menomazione perchè mi rende lo fase di sviluppo in locale e non è un fatto da sottovalutare, anzi.
Prendi il più complicato dei framework PHP e tutte queste difficoltà non le troverai: io, o meglio noi, che questi problemi siamo in grado di risolverceli possiamo andare avanti (a rilento), chi è meno esperto no, cosa che con altri framework molto più portabili non avviene.
2) Conosco molto bene l’inglese ed anche l’italiano, ma la localizzazione di un progetto è un indice di quando sia supportato lo stesso. Tra due soluzione una ben documentata e supportata in più lingue ed una no, preferisco decisamente la prima perchè è indice di una maggiore attenzione nello sviluppo delle soluzioni.
3) Il fatto che necessiti un accesso via SSH limita di molto la scelta dell’hosting, in Italia per esempio c’è Unbit e poco altro… altrimenti devi prenderti un VPS o un dedicato e non tutti in fase di sviluppo possono permetterselo
In conclusione ho scritto l’articolo perchè sentendolo osannare da più parti ho voluto testarlo, mi sono messo nei panni dell’utente medio, e ho tratto le mie conclusioni: chi sviluppa giù in Python o chi comunque ha tempo e conoscenze tecniche e teoriche per impararlo a conoscere inizialmente, lo troverà sicuramente utile.
Per la “massa” trovo che ci siano soluzioni molto più semplici e praticabili che permettono di ottenere gli stessi risultati e in tempi uguali o minori e con un impiego di risorse a livello economico inferiore.
Installare Django difficile?
Ma scherziamo? Basta leggersi la documentazione (il fatto che sia solo in inglese è un problema? L’italiano non conta nulla nel’ambiante informatico), seguire l’installazione step by step sul tutorial e la prima applicazione in django la puoi vedere veramente dopo poco tempo.
Come non darti ragione?
Tanto per fare un esempio Symphony, è altrettanto potente e facile da usare di Django, ma ha ulteriori vantaggi. L’installazione di PHP è semplicissima ed ha una vasta manualistica in italiano ospitata nel sito stesso, oltre ad una comunità molto più vasta…
@ @rchie
L’installazione di Django non è affatto difficile se il sistema che hai a disposizione è “pulito”. Io purtroppo o per fortuna mi occupo un pò di tutto, di sviluppo web ma anche di programmazione a più basso livello, e il mio sistema operativo è tutt’altro che pulito.
Quindi dal mio punto di vista Django è molto bello e facile per chi è alle prime armi e può quindi permettersi di prendere la prima guida in inglese che si rova in rete e seguirla passo passo installandoselo e incominciando a smanettarci.
Ma quando hai anche una virgola che non combacia con i requisiti che deve avere il sistema per l’installazione allora le cose si complicano e non di poco e far convivere Python con tutto il resto a cui non puoi rinunciare diventa molto ma molto difficile.
Anche per un addetto al settore.
O comunque diventa molto più difficile di altre soluzioni più “datate” ma molto più versatili ed in grado di convivere in qualsiasi ambiente.
Poi ripeto, provando Django effettivamente permette un sviluppo di applicazioni molto agevole e permette di realizzare soluzioni web-oriented in maniera molto semplice, ma a che prezzo?
@Dario
Interessante il servizio di hosting francese che hai segnalato. Quasi quasi lo prvo appena ho un pò di tempo, sono curioso di sapere come funge.
Ottima segnalazione 😉
In locale su un pc è tutto semplice perché hai la pass di root.
In remoto, se non viene offerto già installato, o hai una account ssh con privilegi amminstrativi (vedi i casi dei VPS e dei dedicati) oppure è un percorso tortuoso (vedi wiki di Dreamhost)
Comunque, forse può fare piacere sapere di questo servizio francese:
http://www.alwaysdata.com
Supporta sia Django che Rails ed ha un pacchetto base gratuito. Non l’ho provato e quindi non so aggiungere altro.
Ciao
Ciao Davide non vorrei “offenderti” ma non è che la tua è solo cattiveria verso Django? Leggendo il tuo post sono rimasto non poco perplesso, mi sono detto veramente questo tizio ha trovato Django tremendamente difficile da installare? Uno studente di ingegneria?
Io sono un semplice hobbista che sta cercando di imparare un pochettino di programmazione(ho 42 anni non ho mai programmato in vita mia)Python mi è sembrato tra i più semplici per me,quindi guardo anche un pò più in la, eppure sono riuscito a primo botto ad installare Django sia su WinXP, che su Ubuntu 8.04(installazione in locale) senza nemmeno usare apt-get. A conferma di quanto dico tra qualche giorno sto per postare sul mio blog(a conferma che sono un vero niubbo informatico) un mini tutorial su l’installazione di Django saluti.