Django è un framework gratuito in Python, con cui sono stati realizzati Instagram, una parte di Pinterest e migliaia di servizi, pannelli e negozi di dimensioni più contenute. Se uno sviluppatore ti ha proposto «un’applicazione in Django» oppure hai incontrato questo nome cercando una tecnologia adatta al tuo progetto, questa guida spiegherà in modo semplice cos’è Django, a cosa serve e quando è meglio scegliere qualcos’altro.
Indice
- Che cos'è Django?
- Da dove viene e chi lo usa?
- Come funziona Django? Modello, vista, template
- A cosa è adatto Django?
- Quando Django non è la scelta giusta?
- Django o WordPress, Laravel, Next.js?
- Cosa serve per eseguire un'applicazione Django?
- Quanto costa l'hosting per Django?
- FAQ: le domande più frequenti su Django
Cos'è Django?
Django è un framework web, cioè un insieme pronto di strumenti e regole per costruire applicazioni web in Python. Invece di scrivere da zero l'accesso degli utenti, la gestione dei moduli, la connessione al database e la protezione dagli attacchi più comuni, il programmatore ha tutto questo già a disposizione e si concentra su ciò che rende unico il suo progetto.
Gli autori lo descrivono con il motto «framework per perfezionisti con scadenze». Questo descrive bene il carattere di Django: è completo e piuttosto rigido nel definire come deve essere strutturato un progetto, così il team raggiunge rapidamente una versione funzionante e il codice scritto da sviluppatori diversi assume un aspetto simile.
Alcuni fatti fondamentali:
- Licenza: open source (BSD), senza costi, anche per progetti commerciali.
- Linguaggio: Python, uno dei linguaggi di programmazione più popolari al mondo.
- Tipo: framework «con le batterie incluse» (ingl. batteries included), cioè con un gran numero di moduli integrati.
- Versioni: attualmente sono in sviluppo i rami 5.x e 6.x, una nuova versione viene pubblicata all'incirca ogni otto mesi e alcune versioni ricevono supporto pluriennale (LTS).
Distinzione importante: Django non è un sito già pronto né un sistema da cliccare, come WordPress. È la base su cui il programmatore costruisce l'applicazione. Il proprietario di un'azienda di solito non scrive codice in Django, ma commissiona il progetto e poi utilizza un pannello già pronto.
Da dove è nato e chi lo usa?
Django nacque nel 2003 nella redazione del quotidiano Lawrence Journal-World, in Kansas. I giornalisti avevano bisogno di servizi pubblicati al ritmo della sala stampa, quindi i programmatori costruirono uno strumento che permetteva di realizzare una nuova sezione del sito in pochi giorni. Nel 2005 il codice fu reso pubblico e dal 2008 il progetto è seguito dalla fondazione indipendente Django Software Foundation.
Django è stato e continua a essere usato, tra l'altro, da:
- Instagram (una delle più grandi installazioni di Django al mondo),
- Pinterest nelle fasi iniziali,
- Mozilla (parte dei siti e componenti aggiuntivi per Firefox),
- Disqus, Eventbrite, servizi di organizzazioni governative e università.
In Poland Django è popolare nelle software house, nelle startup e nelle aziende che realizzano sistemi interni. La piattaforma Saplo, da cui stai leggendo questo articolo, è anch'essa scritta in Django.
Come funziona Django? Model, View, Template
Django divide l'applicazione in tre livelli. Gli sviluppatori chiamano questo schema MTV (Model, Template, View):
| Livello | Di cosa si occupa | Esempio in un negozio |
|---|---|---|
| Model | descrive i dati e il loro salvataggio nel database | un prodotto ha un nome, un prezzo e una quantità disponibile |
| View (vista) | logica: cosa fare della richiesta | recupera i prodotti dalla categoria "scarpe" |
| Template (modello) | aspetto della pagina in HTML | elenco dei prodotti con foto e prezzi |
Quando qualcuno visita un indirizzo nel browser, Django controlla nel file degli URL (urls.py) quale vista deve gestire la richiesta. La vista recupera i dati tramite il Model, li passa al Template e restituisce la pagina pronta. Lo sviluppatore non scrive query SQL manualmente, perché Django include un ORM, cioè un traduttore tra il codice Python e il database.
A questo si aggiungono moduli che in altre tecnologie devono essere installati separatamente:
- pannello amministrativo generato automaticamente dai modelli, pronto per l'inserimento dei dati dal primo giorno,
- login, registrazione, permessi e gruppi di utenti,
- form con validazione dei dati,
- migrazioni del database, cioè modifiche sicure della struttura delle tabelle man mano che il progetto si evolve,
- protezione dagli attacchi più comuni: CSRF, XSS, SQL injection, clickjacking,
- supporto per più lingue e fusi orari,
- cache, invio di e-mail, mappe del sito, feed RSS.
Il pannello amministrativo è spesso l'argomento più convincente per le aziende. Il cliente ottiene uno strumento comodo per gestire i dati, prima ancora che venga realizzato il front-end dell'applicazione.
A cosa è adatto Django?
Django è la scelta ideale ovunque contino i dati, gli utenti e la logica di business, non solo l'aspetto della pagina. Applicazioni tipiche:
- Sistemi interni aziendali: CRM, prenotazioni, gestione degli ordini, flusso documentale, Pannello per i dipendenti.
- Piattaforme con Account utente: portali con abbonamento a pagamento, corsi online, siti di annunci, marketplace.
- Backend API per applicazioni mobili e front-end con React o Vue, il più spesso con l'aggiunta di Django REST Framework.
- Siti con molti contenuti: portali informativi, cataloghi, basi di conoscenza (su Django funziona, tra l'altro, il CMS Wagtail).
- Progetti con analisi dei dati e AI: Python è il principale linguaggio del machine learning, quindi il modello, gli script analitici e l'applicazione web possono vivere nello stesso ecosistema.
- E-commerce con logiche non standard: configuratori di prodotto, vendite all'ingrosso B2B con listini personalizzati (ad es. Saleor, Django Oscar).
Il filo conduttore: un progetto in cui un CMS pronto all'uso comincia a ostacolare, perché va adattato con plugin a esigenze per cui non è stato progettato.
Quando Django non è una buona scelta?
Onestamente: non ogni progetto ha bisogno di un framework. Django sarà una scelta eccessiva quando:
- ti serve un semplice sito vetrina o un blog, che verrà modificato da una persona senza competenze tecniche. In questo caso, WordPress vince per rapidità di avvio e numero di temi pronti,
- non hai un programmatore e non prevedi di averne uno. Ogni modifica a un'applicazione Django richiede di intervenire sul codice,
- stai costruendo un semplice negozio con un assortimento tipico. WooCommerce o una piattaforma e-commerce pronta all'uso si avvieranno più velocemente e a costi inferiori,
- il progetto è principalmente un frontend interattivo (animazioni, un'applicazione che funziona nel browser), mentre il backend è minimo. In quel caso, Next.js è più naturale.
Una buona regola: se la descrizione del progetto suona come «sito», inizia da un CMS. Se suona come «sistema» o «applicazione», Django è un candidato valido.
Django o WordPress, Laravel, Next.js?
| Criterio | Django | WordPress | Laravel | Next.js |
|---|---|---|---|---|
| Linguaggio | Python | PHP | PHP | JavaScript / TypeScript |
| Tipo | framework | CMS pronto all'uso | framework | framework (frontend + backend) |
| Pannello di amministrazione | integrato, generato dai modelli | integrato | plugin (ad esempio Filament) | assente, va costruito |
| Senza uno sviluppatore | no | sì | no | no |
| Ideale per | sistemi, API, dati | siti web e blog | sistemi in PHP | frontend veloci, SaaS |
| Hosting | server con Python | hosting PHP standard | hosting PHP | Node.js o Vercel |
Abbiamo parlato più diffusamente delle differenze tra un CMS pronto all'uso e un framework nel confronto WordPress o Next.js per il sito aziendale e nell'articolo Cos'è Next.js. La scelta tra Django e Laravel dipende spesso dal linguaggio utilizzato dal team, perché le funzionalità dei due framework sono sostanzialmente equivalenti.
Cosa serve per avviare un'applicazione Django?
Una cosa che surprise molti: non puoi mettere online un'applicazione Django su un normale hosting condiviso che supporta solo PHP. Ti servono:
- Python nella versione adatta (Django 5.x funziona con Python 3.10 e versioni successive),
- server applicativo, più spesso gunicorn, che esegue il codice in Python,
- server web, ad esempio nginx, che riceve il traffico dalla rete e lo inoltra a gunicorn, oltre a servire i file statici,
- database: SQLite per iniziare, PostgreSQL quando il traffico aumenta,
- processo di supervisione, che riavvia l'applicazione dopo un errore o il riavvio del server,
- certificato SSL e dominio associato.
Su un VPS proprio devi installare e configurare tutto manualmente, quindi mantenere aggiornato il sistema. Per uno sviluppatore richiede poche ore di lavoro, mentre per chi gestisce un'azienda è spesso una barriera quasi impossibile da superare.
Su Saplo questa fase è automatizzata. Quando crei un'applicazione Django nel pannello, scegli la versione di Python (3.11 o 3.12), mentre l'installer crea da solo l'ambiente virtuale, installa Django 5.x, avvia gunicorn sotto la supervisione del processo supervisor sulla porta 8000, configura nginx davanti all'applicazione, aggiunge il dominio a ALLOWED_HOSTS e fornisce un certificato SSL gratuito. Starter funziona con SQLite e, quando l'applicazione usa un database separato, il suo indirizzo viene passato al processo tramite la variabile DATABASE_URL.
Il codice personalizzato viene distribuito da un repository GitHub: dopo aver collegato il repository, ogni git push sulla branch di produzione avvia la build e il deployment di una nuova versione, di solito in 1-3 minuti. Abbiamo descritto i dettagli passo dopo passo nella guida Come installare Django su Saplo con la tua applicazione Python. Se il progetto combina un backend realizzato con Django e un frontend realizzato con React, è disponibile anche la soluzione pronta Django + React su un unico dominio, senza dover configurare CORS.
Hai già un'applicazione Django funzionante presso un altro provider? La migrazione a Saplo è gratuita in ogni piano. Ti basta segnalare il progetto tramite il modulo Migrazione.
Quanto costa l'hosting per Django?
Il framework stesso è gratuito, paghi solo il server. Sul mercato trovi tre approcci:
- VPS non gestito: più economico come abbonamento, ma configurazione e sicurezza dipendono da te.
- Piattaforme PaaS (ad esempio Heroku, Render): deployment convenienti da Git, fatturazione mensile in dollari e un costo che cresce con il numero di servizi e dimensioni del database.
- Hosting con un ambiente pronto per Python, come Saplo: deployment da Git e un'unica tariffa annuale in euro.
Un'applicazione Django su Saplo richiede almeno 256 MB di RAM e 2 GB di disco, quindi un progetto piccolo rientra già nel piano più economico. I piani Saplo (il prezzo del primo anno è uguale a quello del rinnovo):
| Piano | Prezzo / anno | RAM | Disco | SSH | Backup |
|---|---|---|---|---|---|
| Box S | 27 € | 1 GB | 15 GB | no (pannello, SFTP) | nessuno |
| Box M | 65 € | 2 GB | 30 GB | sì | nessuno |
| Box L | 139 € | 6 GB | 60 GB | sì | 7 giorni |
| Box XL | 299 € | 12 GB | 150 GB | sì | 14 giorni |
In pratica: Box S basta per un prototipo o un piccolo pannello interno. Uno sviluppatore che vuole accedere al server tramite SSH (ad esempio per avviare manage.py shell o consultare i log) ha bisogno di almeno Box M. Un'applicazione in produzione con database PostgreSQL, job in background e traffico reale funziona bene a partire da Box L, che include anche backup giornalieri con 7 giorni di conservazione. Il confronto completo è nel listino prezzi di Saplo.
Riepilogo
Django è un framework maturo e gratuito in Python che offre al programmatore, fin dal primo giorno, un Pannello di amministrazione, l'autenticazione, un database e funzionalità di sicurezza. È più adatto ai sistemi aziendali, alle piattaforme con account utente, alle API e ai progetti legati ai dati. Per un semplice sito vetrina o un blog è preferibile WordPress. Se hai già un progetto in Django o stai per ordinare il tuo, puoi avviarlo su Saplo con deployment da Git e senza dover configurare manualmente il server.
FAQ: le domande più frequenti su Django
Django è gratuito? Sì. Django è open source con licenza BSD e puoi usarlo senza costi anche in progetti commerciali. I costi sono il lavoro dello sviluppatore e il server su cui gira l'applicazione.
Django è adatto ai programmatori alle prime armi? Sì, se conosci le basi di Python. La documentazione ufficiale include un tutorial completo e da anni la comunità polacca Django Girls organizza workshop gratuiti per chi inizia da zero.
Django è veloce e gestisce un traffico elevato? Sì. Le prestazioni dipendono principalmente dall'architettura dell'applicazione, dal database e dalla cache, non dal framework in sé. La prova migliore è Instagram, che gestisce centinaia di milioni di utenti con Django.
Posso ospitare Django su un hosting tradizionale? No, non su un hosting condiviso standard che supporta solo PHP. Serve un server con Python, un server applicazioni (ad esempio gunicorn) e nginx. Su Saplo l'intero ambiente viene configurato automaticamente durante la creazione dell'applicazione. I dettagli sono disponibili alla pagina hosting Django.
Quanta memoria RAM richiede un'applicazione Django? Una piccola applicazione funziona già con 256 MB di RAM. Per un progetto in produzione con database PostgreSQL, task in background (ad esempio Celery) e un traffico più elevato, è consigliabile pianificare da 2 a 6 GB di RAM.
- #Django
- #Framework
- #Hosting Django
- #Python
