Django (informatica)

framework per Python

Django è un web framework con licenza open source per lo sviluppo di applicazioni web, scritto in linguaggio Python, seguendo il paradigma "Model-Template-View".

Django
software
Logo
Logo
Schermata di esempio
Schermata di esempio
GenereFramework per applicazioni web
SviluppatoreDjango Software Foundation
Data prima versione2004
Ultima versione5.1.1 (3 settembre 2024)
Sistema operativoMultipiattaforma
LinguaggioPython
Toolkitweb user interface
LicenzaLicenza BSD
(licenza libera)
Sito webwww.djangoproject.com/

Il progetto è sviluppato dalla "Django Software Foundation" (DSF), un'organizzazione indipendente senza scopo di lucro.[1] Venne concepito inizialmente per gestire diversi siti di notizie per la World Company di Lawrence (Kansas), e distribuito con una licenza BSD a luglio 2005. Alcuni siti noti che utilizzano questo framework sono attualmente Pinterest,[2] Instagram,[3] Mozilla,[4] The Washington Times,[5] Public Broadcasting Service.[6], Bitbucket,[7], NASA[8]

Introduzione e funzionalità

modifica

Django è stato utilizzato internamente per diverso tempo prima di essere distribuito pubblicamente. Fu sviluppato da Adrian Holovaty, Simon Willison, Jacob Kaplan-Moss e Wilson Miner mentre lavoravano alla World Company, per la gestione di tre siti di notizie: The Lawrence Journal-World,[9] lawrence.com[10] e KUsports.com.[10] È stato chiamato Django in omaggio al chitarrista jazz Django Reinhardt.

L'orientamento che ha Django nella gestione dei siti di notizie è evidente dal suo design, poiché fornisce un certo numero di funzionalità che facilitano lo sviluppo rapido di applicazioni per la gestione di contenuti Web. Per esempio, invece che richiedere sviluppatori per la realizzazione di controller e view per le aree di amministrazione di un sito, Django fornisce una soluzione integrata di amministrazione dei contenuti che può essere inclusa come parte di ogni sito basato su Django e che può gestire molti siti con un'unica installazione. L'applicazione per l'amministrazione permette di creare, aggiornare e eliminare contenuti rappresentati da oggetti tenendo traccia di tutte le operazioni effettuate e fornisce un'interfaccia per la gestione di utenti e gruppi di utenti (inclusa la gestione dei permessi).

La distribuzione principale di Django viene fornita con applicazioni che forniscono un sistema di commenti, funzionalità per la creazione di feed RSS e/o Atom, "pagine semplici" che permettono di essere gestite senza dover scrivere un controller o una view appositi, e funzionalità di redirezione di URL.

Altre funzionalità incluse:

  • Astrazione del database relazionale ad oggetti.
  • Possibilità di installare funzionalità attraverso plugin.
  • Robusta API per la gestione del database.
  • Sistema di "view generiche" che evitano la stesura di codice ripetitivo per determinati casi comuni.
  • Sistema di template basato su tag con ereditarietà dei template.
  • Gestore di URL basate su espressioni regolari.
  • Sistema "middleware" per lo sviluppo di funzionalità aggiuntive; ad esempio, componenti middleware che forniscono caching, compressione dell'output, normalizzazione dell'output, protezione CSRF e supporto per la sessione sono inclusi nella distribuzione principale di Django.
  • Supporto per localizzazione, incluse traduzioni dell'interfaccia amministrativa, in molte lingue.
  • Inclusa documentazione accessibile dall'interfaccia amministrativa (compresa documentazione automaticamente generata dai modelli e librerie template aggiunte dalle applicazioni).
  • Sistema di gestione degli utenti e loro autenticazione nell'applicazione Web.
  • Sistema per la creazione e la validazione di form HTML.

Mentre Django è influenzato fortemente dalla filosofia di sviluppo Model-View-Controller, i suoi sviluppatori dichiarano pubblicamente che non si sentono in dovere di seguire un particolare paradigma di sviluppo, preferendo invece semplicemente "ciò che sembra giusto". Come risultato, per esempio, ciò che sarebbe chiamato "controller" in un framework MVC classico in Django è chiamato "view" mentre ciò che dovrebbe essere chiamato "view" è chiamato "template".

Supporto server

modifica

Django può essere usato con Apache, nginx usando il supporto di WSGI, oppure Cherokee grazie al modulo Python "flup".[11] Può inoltre usare un server FastCGI, per esempio Lighttpd o Hiawatha. Può anche essere usato con qualunque altro server standard WSGI.[12]

Django supporta in modo completo e multipiattaforma quattro tipi di database: PostgreSQL, MySQL, SQLite e Oracle. Microsoft SQL Server può essere usato solo in ambiente Windows,[13] mentre esistono backend esterni simili per IBM DB2,[14] SQL Anywhere[15] e Firebird SQL.[16] Inoltre esiste un fork chiamato django-nonrel[17] che supporta database NoSQL, come per esempio MongoDB e il datastore di Google App Engine.

Django può inoltre essere usato insieme a Jython[18] con qualunque server applicativo Java EE, come per esempio GlassFish o JBoss.

Google App Engine prevede il supporto per Django nella versione 1.x.x[19] come uno dei framework integrati.

  1. ^ Sito istituzionale del progetto.
  2. ^ Pinterest: Tecnologie alla base di Pinterest.
  3. ^ What Powers Instagram: Hundreds of Instances, Dozens of Technologies, su instagram-engineering.tumblr.com.
  4. ^ Python | MDN Archiviato l'8 febbraio 2012 in Internet Archive..
  5. ^ Home Archiviato il 15 marzo 2016 in Internet Archive..
  6. ^ 20 Creative Websites Running Django, su fearlessflyer.com. URL consultato il 21 giugno 2013 (archiviato dall'url originale il 14 giugno 2013).
  7. ^ [1]
  8. ^ [2]
  9. ^ The Lawrence Journal-World.
  10. ^ a b ..
  11. ^ Django documentation of deployment Documentazione ufficiale per il deploy Archiviato l'11 gennaio 2012 in Internet Archive..
  12. ^ Come usare Django con Apache e mod_wsgi Archiviato l'8 marzo 2013 in Internet Archive..
  13. ^ django-mssql Django e MSSQL.
  14. ^ ibm-db Python support for IBM DB2 and IBM Informix, su code.google.com. URL consultato il 13 settembre 2013.
  15. ^ sqlany-django - SQL Anywhere Database Backend for Django, su code.google.com. URL consultato il 13 settembre 2013.
  16. ^ django-firebird - Firebird database backend for Django, su code.google.com. URL consultato il 13 settembre 2013.
  17. ^ Django-nonrel - NoSQL support for Django, su allbuttonspressed.com. URL consultato il 13 settembre 2013.
  18. ^ django-jython.
  19. ^ Running Pure Django Projects on Google App Engine.

Altri progetti

modifica

Collegamenti esterni

modifica