Tempo fa scrissi un articolo su Django e lo intitolai “Django il framework in python per sviluppo Web” tenendomi fuori da apprezzamenti di carattere personale. Tuttavia parlavo dei tre compari (Less code, Less effort, Less money), ora, dopo aver avuto tante piccole e grandi soddisfazioni da questo ambiente, ti racconto perché sviluppo con django applicazioni e siti Web.
Di seguito trovi i punti di forza di Django che per me sono stati decisivi.
Anche se ogni framework di sviluppo per applicazioni e per siti Web ha i suoi pregi e i suoi difetti io ritengo che Django disponga davvero degli attrezzi giusti per lo sviluppo. Puoi condividere o meno le mie motivazioni, ma sappi che quello che stai per leggere è il frutto di considerazioni, di domande che mi sono state poste e a cui io stesso, inizialmente, dovetti dare risposte, quindi spero possa ritornare utile anche a te, fedele lettore.
Domande sullo sviluppo: perché Django
Prima di intraprendere lo studio di una nuova tecnologia ognuno si imbatte in tanti dubbi, e spesso questi dubbi seguono una linea logica che parte dal linguaggio di programmazione da utilizzare fino ad arrivare al supporto e alle prestazioni.
- Per sviluppare con Django quale linguaggio di programmazione devo conoscere?
- facilita lo sviluppo di applicazioni web?
- Mi chiedo quanto mi arrabbierò, mi sentirò frustrato o dovrò accettare scelte progettuali che non condivido.
- Genera una admin nativa automaticamente?
- Permette di sviluppare una funzionalità alla volta e poi collegarla alle altre?
- È sufficientemente testato?
- Dispone di pacchetti con nuove funzionalità già pronte?
- È supportato?
- Ci sono dei rilasci stabili, ogni quanto?
- È documentato?
Entro nel vivo e ti dico perché scegliere Django.
Perché sviluppo con Django?
Ecco la mia Top Ten per sviluppare applicazioni e siti Web con Django. Sono i Punti di forza di Django.
Perché dedico tempo e fatica per imparare a pensare in modalità django.
1. Django è scritto in Python;
2. Django viene distribuito con Batterie incluse;
3. Django Non complica le cose;
4. Django generata automaticamente un’interfaccia amministrativa;
5. Django è Scalabile;
6. Django è Testato;
7. Django dispone di Molti Package;
8. Django ha una Comunità di sviluppo molto attiva;
9. Django Project fornisce Rilasci stabili duraturi;
10. Django dispone di una Documentazione di qualità;
Django è scritto in Python
Python è probabilmente il linguaggio di programmazione più facile da imparare.
Utilizza costrutti in linguaggio naturale – lingua inglese – (ad esempio, layout simile a un paragrafo con tanto di indentazione) e sintassi semplice da imparare, Python rende comprensibile la struttura del programma e il flusso logico. È molto più facile da imparare rispetto ad altri linguaggi di programmazione.
Ciò è evidente perché molti corsi introduttivi alla programmazione nelle università usano Python come linguaggio prescelto.
PYTHON…
- È versatile;
- Gestisce siti Web e applicazioni desktop su PC e Mac;
- È nelle applicazioni mobile e in molti dispositivi elettronici;
- È un potente e popolare linguaggio di scripting per scopi diversi;
- Imparare Python ti sarà sicuramente di beneficio, non importa dove sta andando la tua carriera ti porta;
- Google usa Python in molte delle sue applicazioni;
- È utilizzato dai programmatori professionisti;
- Insieme a Javascript è il linguaggi più utilizzato;
- È più diffuso di PHP per lo sviluppo di siti Web ed applicazioni;
- È molto richiesto nelle aziende.
Batterie incluse
Django eredita da Python la filosofia delle “batterie incluse”.
Questo è spesso interpretato nel senso che Django include molte cose extra che non ti servono. Ma ciò non è corretto. Un’analogia migliore è far riferimento a non dover scrivere tanto codice per costruire una funzionalità (batterie). Ti basta solo “premere l’interruttore” e Django fa il resto.
Praticamente questo significa che Django implementa alcuni comuni processi, anche complessi, fornendo degli strumenti semplici in contenitori per nascondere la complessità, ma senza togliere la potenza.
Le batterie di Django sono i contrib package – pacchetti messi a disposizione dal progetto. I contrib package facilitano lo sviluppo di applicazioni, ma andiamo per ordine, ti mostrerò i pacchetti nativi:
- admin. L’applicazione Django di amministrazione;
- auth. Il framework di autenticazione di Django;
- contenttypes. Un framework per modificare i modelli – models – di Django;
- flatpages. Un framework per la gestione delle pagine statiche come privacy policy e termini di condizioni di utilizzo.
- gis. Aggiunge la gestione della geolocalizzazione.
- humanize. Aggiunge filtri al template per migliorare la leggibilità del contenuto.
- messages. Un framework per la visualizzazione di notifiche – messaggi flash – all’utente.
- postegres. Caratteristiche specifiche per il database PostgreSQL.
- redirects. Gestisce i redirect.
- sites. Permette di gestire lo sviluppo di diversi siti Web da un’unica installazione.
- sitemaps. Implementa il sitemap in XML conforme agli standard espressi dal W3C.
- staticfiles. Raccoglie i file statici dall’interno della applicazione.
- syndication. Un framework per generare feed di syndication.
I contrib package possono essere complicati per chi si approccia a Django per la prima volta, ma sono la soluzione per non riscrivere codice per esigenze note. Django fornisce un elenco corposo di potenti moduli integrati non occorre ri-crearli, semplicemente utilizzarli ed adattarli al tuo progetto.
Non complica le cose
Quando sviluppi un’applicazione Django, non viene aggiunto nessun boilerplate con codice non necessario o ridondante. Non vengono importate cose non necessarie, librerie di terze parti non richieste o file XML di configurazione.
Questo può mettere un pizzico paura quando sviluppi il tuo primo progetto con Django. Gli strumenti di automazione (startproject e startapp) creano soltanto la base della configurazione del progetto e alcune cartelle e file iniziali ancora vuoti.
Mentre questo potrebbe apparire un cattivo approccio, è invece il miglior modo attraverso il quale Django fornisce una solida base sulla quale puoi costruire tutto quello che vuoi.
Il risultato è una maggiore fiducia nel tuo codice perché sai effettivamente quello che ci hai messo dentro.
Admin generata automaticamente
Django fornisce immediatamente un’interfaccia di amministrazione per
lavorare con i modelli – un CRUD essenziale sui dati relazionati fra loro – e gestire utenti, permessi utente e gruppi.
L’interfaccia modello (models), completamente gestibile dall’amministrazione nativa di Django, fornisce immediatamente un modo per separare la logica dall’applicazione dall’amministrazione del database – per la maggior parte dei database più usati dal mercato del software.
Personalizzazione dell’admin di Django
Con semplici cambiamenti alla configurazione dell’admin puoi gestire i campi del modello, mostrare o nascondere campi, ordinare, filtrare, e sistemarli per un migliore risultato.
Documentazione automatica delle classi e dei metodi
L’admin fornisce una funzionalità opzionale per la creazione automatica della documentazione dei modelli.
Gestione degli utenti
La gestione degli utenti è sempre un aspetto importante per lo sviluppo di un sito Web moderno, e Django mette di disposizione tutto quello che puoi immaginare per aggiungere, modificare utenti, cambiare password, creare nuovi gruppi, assegnare permessi specifici e comunicare con gli utenti.
Come tutto per tutto quello che puoi fare con Django, anche l’admin è personalizzabile nell’aspetto ed estendibile nelle funzionalità.
Per esempio, i template dell’admin possono essere sovrascritti, e possono essere aggiunte nuove funzionalità, per compiti come esportare i contenuti dei modelli in file CSV (Comma Separated Values).
Scalabile
Django è basato su Model – View – Controller (MVC) design pattern (Schema di progettazione).
Questo significa che il database, la gestione (back-end) e il modo in cui i dati vengono mostrati (front-end) sono separati tra loro.
Django fa un ulteriore passo avanti separando il codice che sarà eseguito (lato – server), da quello statico media (immagini, file, CSS e JavaScript) che compongono il tuo sito (lato – client).
In questo modo è possibile:
- Tenere il database su un server, l’applicazione su un altro e i media su un altro ancora, o tenere tutto sullo stesso, per esempio;
- Facilmente i contenuti multimediali possono essere serviti da un CDN (Content Delivery Network):
- Utilizzare un sistema di Cache dei contenuti a diversi livelli e con ambiti diversi, ma soprattutto…
- Per lo sviluppo di applicazioni e siti di grandi dimensioni con Django, utilizzare il clustering e il bilanciamento del carico (load-balancing) per distribuire i file del sito web su più server.
Django è adatto allo sviluppo di siti di grandi dimensioni
Django supporta una vasta gamma di integrazioni, fra i più popolari fornitori di terze parti per web server, per la gestione delle prestazioni, della memorizzazione nella cache, di clustering e di bilanciamento delle risorse.
Supporta anche le principali applicazioni e servizi di posta elettronica e di messaggistica come OAuth e REST.
Testato
Un buon modo per capire se un framework Web è robusto ed affidabile è approfondire da quanto tempo è in circolazione, quante applicazioni sono state sviluppate con Django, se sta continuando a crescere, e valutare il profilo dei siti Web che lo stanno utilizzando.
Django è stato inizialmente aperto per la prima volta nel 2005, dopo essere stato messo sotto pressione, per alcuni anni in una testata giornalistica.
Dopo quasi venti anni di crescita, Django ora non solo è il motore di testate giornalistiche come il Washington Post, ma è anche alla base o parte delle più grandi imprese a livello mondiale come Instagram, Disquis, Bitbucket, EventBride e Zapier.
Django continua a crescere in popolarità. Djangosites raccoglie più di 10.000 siti Web basati su Django e questo è solo un numero di siti Web che si registrano su Djangosites.
Sarebbe impossibile indovinare quante pagine Django serve ogni giorno
rispetto ad altre tecnologie, ma è irrilevante: Django ha dimostrato
nel corso degli anni di poter gestire, con successo, alcuni dei siti più trafficati su la rete Internet. Django continua a far crescere la tribù dei suoi estimatori.
Tanti Package disponibili per lo sviluppo di applicazioni con Django
Quasi tutto ciò che probabilmente farai con Django è già stato fatto.
Molti sviluppatori della grande comunità di Django restituiscono alla community rilasciando il loro progetti sotto forma di pacchetti open source.
È possibile trovare grandi archivi – repository – di questi progetti sul sito Djangopackages.
Giusto per darti un’idea di quello che si può trovare:
- Wagtail, Mezzanine and django CMS. CMS – Content Management System – sistema per la gestione dei contenuti, costruiti con Dajngo;
- Cookiecutter. Configurazione rapida e semplice di Django per applicazioni complesse ed avanzate;
- Django REST Framework. Implementa una REST API in Django;
- Django allauth. Autenticazione integrata fra Django e Facebook, GitHub, Google and Twitter;
- Debug toolbar. Mostra le informazioni di Debug del tuo progetto in esecuzione;
- Django Celery. Fornisce l’integrazione fra Celery e Django;
- Oscar, Django Shop and Cartridge. Piattaforme E-commerce per Django (Cartridge è una estensione per Mezzanine CMS)
Con migliaia di pacchetti come questi, è molto probabile che riuscirai a trovare un pacchetto che funziona per te o può essere modificato in base alle tue esigenze esigenze, senza dover reinventare la ruota.
Comunità di sviluppo molto attiva
Uno dei più grandi rischi per un progetto open source è se c’è sufficiente interesse per lo sviluppo che attiri il supporto degli sviluppatori per un periodo di tempo lungo.
Non ci sono rischi del genere con Django – non solo ha più di 15 anni, ma ha anche una storia consistente di rilasci, continua ad essere supportato da un comunità attiva e un grande team di volontari che mantengono e migliorano il codice base del progetto continuamente.
Django ha avuto il suo primo rilascio di produzione nel 2008 (versione 1.0) a cui sono seguite 4 rilasci LTS – 1.4, 1.8, 2.2, ora si è in attesa della 3.2 pianificata per la primavera del 2021. La versione LTS corrente è ancora la 2.2 che sarà supportata fino a metà 2022. Django 3.0 è stata rilasciata a dicembre del 2019. Per alcuni progetti sto utilizzando con successo la versione 3.1.
Il team di sviluppo gestisce una roadmap di sviluppo, documentando sul sito web Djangoproject gli incontri e rilasci decisivi.
Il progetto Django è anche supportato da una fondazione indipendente – La Django Software Fondation – che è registrata come non-profit negli Stati Uniti.
Rilasci stabili duraturi
I progetti software open source sono spesso sviluppati più attivamente e per questo sono più sicuri rispetto ai progetti software proprietari.
Lo svantaggio di un progetto open source in continua evoluzione è la mancanza di un base solida e funzionante sulla quale modellare uno sviluppo commerciale.
Django risolve questo problema con le versioni LTS (Long Term Support) dell0 sviluppo del software e un processo di rilascio definito a tappe.
Le versioni LTS sono rilasciate e supportate per un lungo periodo (solitamente tre anni). In questo periodo il codice del progetto è supportato per mantenerlo stabile ed efficace; con patch per la risoluzione di problemi di sicurezza e senza perdere la retro compatibilità con i precedenti rilasci.
Il processo di rilasci assicura alle versioni di Django di rimanere stabili per tutto il ciclo di vita. Dopo una fase di sviluppo, ogni versione introduce una nuova fase Alpha nella quale viene applicato il blocco delle funzionalità per la versione precedente.
La nuova versione allora, passa da Beta allo stadio Release Candidate (RC) nel quale tutti i bug sono stati risolti. Se non ci sono ulteriori difficoltà e necessità alla RC segue la versione finale Feature Release.
Quando la nuova versione è pubblicata, le uniche modifiche applicate sono relative alla risoluzioni di eventuali bug, attraverso il rilascio di patch. Queste patch sono compatibili al 100% con la Feature Release.
Documentazione di qualità
Lasciami dire che la documentazione di qualità dovrebbe essere la prima in questa lista, la documentazione è la forza di Django. È stata la prima motivazione che mi ha fatto scegliere perché sviluppare con Django su altre tecnologie.
Mi ha messo subito a mio agio sapere di poter contare su una documentazione valida.
Fin dall’inizio, gli sviluppatori di Django si sono impegnati nel rendere la documentazione esaustiva e con guide – tutorial – semplici da seguire.
Django ha supporto decisivo grazie ai membri della community che offrono sia servizi gratuiti sia a pagamento, manuali, libri, corsi e tanti consigli, trick e assistenza attraverso i loro siti Web e gruppi di discussione.
Alcuni dei miei preferiti sono Tango con Django, Django Girls, qualsiasi cosa da Danny e Audrey a TwoScoops Press, piattaforme come stackoverflow e naturalmente il sito ufficiale.
Sviluppo applicazioni con Django il framework per lo sviluppo di siti Web ed applicazioni scalabili.
Dopo tanto tempo che lo osservo mi sono lanciato ed ho cominciato a provare DJANGO e WAGTAIL.
Non ho capito però se mi conviene fare il mio sito direttamente i DJANGO o se l’uso di WAGTAIL mi da qualche vantaggio, e quale.
WAGTAIL è un CMS basato su Django, è adatto alla creazione di un sito Web in modo semi automatico.
Come illustrato nella documentazione wagtail fornisce la struttura di base e soprattutto il sistema per la gestione dei contenuti (CMS) che poi, però, va esteso (https://docs.wagtail.io/en/v2.15.1/getting_started/tutorial.html).
Per la creazione di un sito Web, io consiglio di iniziare riutilizzando codice già scritto, per esempio un progetto come wagtail, in questo modo si semplifica il lavoro da fare, che diversamente sarebbe tanto.