HTML CSS JAVASCRIPT SQL MYSQL PYTHON JAVA PHP C C++ C# PACKET TRACER CYBERSECURITY REACT TYPESCRIPT NODE.JS GIT & GITHUB DATA SCIENCE BOOTSTRAP GO KOTLIN JQUERY DJANGO VUE ANGULAR MONGODB POSTGRESQL SASS NUMPY PANDAS SCIPY DSA RUST SWIFT BASHXMLW3.CSSANGULARJSAIAWSPROGRAMMAZIONEEXCEL WORD POWERPOINT
Corso gratuito · Interattivo

Corso Django in italiano

Impara da zero il framework web Python più usato al mondo: models, views, template, ORM, pannello admin, QuerySet, PostgreSQL e deploy su AWS. 59 lezioni con esempi interattivi.

Cos'è Django

Django è un framework web Python ad alto livello che incoraggia lo sviluppo rapido e un design pulito e pragmatico. È stato creato nel 2003 e oggi è usato da alcuni dei siti più trafficati al mondo, come Instagram, Pinterest e Spotify.

Perché scegliere Django

  • Veloce: porta le applicazioni dall'idea al completamento rapidamente
  • 🛡️ Sicuro: aiuta a evitare i comuni errori di sicurezza
  • 📈 Scalabile: regge siti con milioni di utenti
  • 🔋 Batterie incluse: admin, ORM, autenticazione e form già pronti

Una semplice view Django

Esempio di codice

Premi Provalo tu su ogni esempio per leggere e modificare il codice con la sintassi colorata. Per eseguirlo davvero useremo gli ambienti indicati nel pannello.

Introduzione a Django

Django segue il pattern architetturale MTV (Model-Template-View), una variante del classico MVC.

Il pattern MTV

  • Model: gestisce i dati e la logica del database
  • Template: gestisce la presentazione (l'HTML mostrato all'utente)
  • View: gestisce la logica che collega Model e Template

"Batterie incluse"

Django arriva con molte funzionalità pronte all'uso:

  • Pannello di amministrazione automatico
  • ORM (Object-Relational Mapping) per il database
  • Sistema di autenticazione utenti
  • Sistema di form e validazione
  • Internazionalizzazione e localizzazione

Prerequisiti

  • Conoscenza base di Python
  • Concetti base di HTML e CSS
  • Nozioni base di database

Per Iniziare con Django

Per prima cosa serve Python installato. Poi si installa Django con pip.

Esempio di codice

Crea il primo progetto

Esempio di codice

Avvia il server di sviluppo

Esempio di codice

Poi visita http://127.0.0.1:8000/ nel browser per vedere la pagina di benvenuto di Django.

Creare un Ambiente Virtuale

Gli ambienti virtuali isolano le dipendenze di ogni progetto, evitando conflitti tra versioni diverse.

Perché usarlo

  • Isola le dipendenze per progetto
  • Evita conflitti tra versioni di librerie
  • Rende facile condividere il progetto con altri
Esempio di codice

Salvare le dipendenze

Esempio di codice

Per disattivare l'ambiente basta digitare deactivate.

Installazione di Django

Django si installa con pip, il gestore di pacchetti di Python.

Esempio di codice

Verifica da Python

Esempio di codice

Dipendenze installate

Django installa automaticamente alcune librerie di supporto:

  • asgiref: supporto al protocollo ASGI
  • sqlparse: parser per le query SQL

Crea un Progetto Django

Il comando startproject genera la struttura base di un sito Django.

Esempio di codice

Struttura generata

Esempio di codice

Configurazioni chiave in settings.py

Esempio di codice

Crea un'App Django

Un progetto Django contiene una o più app, ciascuna dedicata a una funzionalità.

  • Progetto: la configurazione generale del sito
  • App: un componente funzionale (blog, shop, members...)
Esempio di codice

Struttura dell'app

Esempio di codice

Registra l'app

Esempio di codice

Le Views in Django

Le views contengono la logica che elabora una richiesta HTTP e restituisce una risposta.

Esempio di codice

View con template

Esempio di codice

Class-Based View

Esempio di codice

Configurazione degli URL

Il routing mappa gli indirizzi web alle view corrispondenti.

Esempio di codice

URL dell'app

Esempio di codice

Convertitori di parametri

  • <int:id> — numero intero
  • <str:nome> — stringa
  • <slug:titolo> — slug (es. mio-articolo)
  • <uuid:uid> — UUID

I Templates Django

I template sono file HTML con una sintassi speciale per contenuto dinamico.

Template base con blocchi

Esempio di codice
#

Variabili e filtri

Esempio di codice

Configurazione

Esempio di codice

I Models in Django

I models definiscono la struttura delle tabelle del database tramite classi Python.

Esempio di codice

Tipi di campo comuni

  • CharField — testo breve
  • TextField — testo lungo
  • IntegerField — numero intero
  • BooleanField — vero/falso
  • DateField / DateTimeField — date
  • ForeignKey — relazione tra tabelle

Applicare i model al database

Esempio di codice

Inserire Dati nel Database

I dati si inseriscono tramite la Django shell, una view o il pannello admin.

Esempio di codice

Inserimento multiplo (bulk)

Esempio di codice

Aggiornare Dati nel Database

Per modificare un record si recupera l'oggetto, si cambiano i campi e si salva.

Esempio di codice

Aggiornamento di massa con update()

Esempio di codice

get_or_create()

Esempio di codice

Eliminare Dati dal Database

Per eliminare un record si usa il metodo delete().

Esempio di codice

Soft delete (buona pratica)

Spesso è meglio disattivare un record invece di eliminarlo definitivamente:

Esempio di codice

Aggiornare un Model

Quando si modifica un model (aggiungendo o togliendo campi) servono nuove migrations.

Esempio di codice

Crea e applica la migration

Esempio di codice

Comandi utili

Esempio di codice

Preparare Template e View

Mettiamo insieme una view che recupera i dati e un template che li mostra.

Esempio di codice

Il template della lista

Esempio di codice

Template Master (Base)

Il template master definisce la struttura comune a tutte le pagine, evitando ripetizioni.

Esempio di codice
#

Template figlio

Esempio di codice

Il tag {% extends %} eredita la struttura, i {% block %} riempiono le parti variabili.

Pagina Index Principale

La home page mostra una panoramica con statistiche e ultimi inserimenti.

Esempio di codice

URL principale

Esempio di codice

Gestire gli Errori 404

Quando una pagina non esiste, Django mostra una pagina di errore 404.

Esempio di codice

Sollevare un 404 manualmente

Esempio di codice

In produzione (con DEBUG = False) Django usa il file templates/404.html se presente.

Aggiungere una Test View

Django include un sistema di test automatici per verificare che le view funzionino.

Esempio di codice

Eseguire i test

Esempio di codice

Il Pannello di Amministrazione

Django include un potente pannello admin già pronto, generato automaticamente dai model.

Esempio di codice

Poi visita http://127.0.0.1:8000/admin/ e accedi.

Registra un model nell'admin

Esempio di codice

Da qui puoi creare, modificare ed eliminare record con un'interfaccia grafica completa, senza scrivere codice.

Creare Utenti

Si possono creare diversi tipi di utenti, con permessi differenti.

Esempio di codice

Proteggere una view con login

Esempio di codice

Includere Models nell'Admin

Per personalizzare la visualizzazione di un model si usa una classe ModelAdmin.

Esempio di codice

Organizzare i campi in sezioni

Esempio di codice

Impostare List Display

list_display controlla quali colonne appaiono nell'elenco dell'admin.

Esempio di codice

Colonne calcolate

Esempio di codice

Aggiornare Membri dall'Admin

Le azioni admin permettono di modificare più record contemporaneamente.

Esempio di codice

list_editable consente di modificare un campo direttamente dalla lista, senza aprire il dettaglio.

Aggiungere Membri dall'Admin

Si può personalizzare il form di inserimento dell'admin.

Esempio di codice

Eliminare Membri dall'Admin

Dall'admin si eliminano i record singolarmente o in blocco con le checkbox.

Esempio di codice

Logica personalizzata all'eliminazione

Esempio di codice

Variabili nei Template

Le variabili nei template Django si scrivono tra doppie graffe {{ }}.

Esempio di codice

Accesso ad attributi e chiavi

Esempio di codice

Se una variabile non esiste, Django mostra una stringa vuota senza generare errori.

I Tag nei Template

I tag eseguono logica e si scrivono tra {% %}.

Esempio di codice

Tag più usati

Esempio di codice

If/Else nei Template

Il tag {% if %} mostra contenuto in base a una condizione.

Esempio di codice

Operatori disponibili

Esempio di codice

For Loop nei Template

Il tag {% for %} itera su liste e collezioni.

Esempio di codice

Variabili del ciclo

Esempio di codice

Il tag {% empty %} definisce cosa mostrare se la lista è vuota.

Commenti nei Template

I commenti Django non compaiono nel codice HTML inviato al browser.

Esempio di codice

A differenza dei commenti HTML <!-- ... -->, quelli Django vengono rimossi prima dell'invio, quindi restano invisibili nel sorgente della pagina.

Include nei Template

Il tag {% include %} inserisce un template parziale dentro un altro, favorendo il riuso.

Esempio di codice

Esempio pratico

Esempio di codice

Introduzione ai QuerySet

Un QuerySet è una raccolta di oggetti del database. Le query SQL vengono eseguite solo quando i dati servono davvero (è "lazy").

Esempio di codice

Metodi principali

  • all() — tutti i record
  • get() — un singolo record
  • filter() — record che soddisfano un criterio
  • exclude() — record che NON soddisfano un criterio
  • order_by() — ordinamento

Il Metodo Get

get() recupera un solo oggetto corrispondente ai criteri.

Esempio di codice

Gestire le eccezioni

Esempio di codice

Nelle view è più comodo get_object_or_404, che genera direttamente una pagina 404.

Il Metodo Filter

filter() restituisce tutti i record che soddisfano i criteri indicati.

Esempio di codice

Combinare i filtri

Esempio di codice

Ordinare i Risultati

order_by() ordina i record secondo uno o più campi.

Esempio di codice

Ordinamento di default nel model

Esempio di codice

Aggiungere File Statici

I file statici sono CSS, JavaScript e immagini che non cambiano dinamicamente.

Esempio di codice

Usarli nel template

Esempio di codice

Struttura consigliata

Esempio di codice

Installare WhiteNoise

WhiteNoise permette di servire i file statici direttamente da Django in produzione, con compressione e caching.

Esempio di codice

Configurazione

Esempio di codice

WhiteNoise è ideale per deployment su servizi come Heroku o Railway, dove non c'è un server come Nginx davanti a Django.

Raccogliere i File Statici

In produzione tutti i file statici vanno raccolti in un'unica cartella con collectstatic.

Esempio di codice

Il comando cerca i file statici in tutte le app e li copia in STATIC_ROOT.

Esempio di codice

In .gitignore

Esempio di codice

File Statici Globali

I file statici globali stanno nella root del progetto, non nelle singole app.

Esempio di codice

Struttura

Esempio di codice

Django cerca prima nelle cartelle dell'app, poi in quelle globali, permettendo di sovrascrivere file specifici.

Aggiungere Stili al Progetto

Un foglio di stile globale dà un aspetto coerente a tutto il sito.

Esempio di codice

Esempio di CSS

Esempio di codice

PostgreSQL con Django

PostgreSQL è il database raccomandato per i progetti Django in produzione: potente, scalabile e robusto.

Esempio di codice

Configurazione

Esempio di codice

Instagram, uno dei più grandi siti Django al mondo, gira proprio su PostgreSQL.

Creare un Account AWS

AWS RDS (Relational Database Service) permette di ospitare PostgreSQL nel cloud.

Passi per creare l'account

  • Vai su aws.amazon.com e clicca "Crea un account AWS"
  • Inserisci email, password e nome account
  • Aggiungi un metodo di pagamento (il Free Tier è gratuito per 12 mesi)
  • Verifica l'identità e scegli il piano "Basic"

Free Tier per RDS

  • 750 ore/mese di istanza db.t3.micro
  • 20 GB di storage SSD
  • 20 GB di backup automatico
Esempio di codice

Creare un Database su RDS

Dalla console AWS si crea un'istanza PostgreSQL gestita.

Passaggi principali

  • Cerca RDS nella console e clicca "Create database"
  • Engine: PostgreSQL, Template: Free tier
  • Imposta identificatore, username e password
  • Instance class: db.t3.micro, Storage: 20 GB
  • Public access: Yes (per lo sviluppo)
Esempio di codice

Security Group

Aggiungi una regola in ingresso per la porta 5432 (PostgreSQL) dal tuo IP, così Django potrà connettersi.

Connettere Django a RDS

Si configura settings.py con i dati dell'istanza RDS, usando variabili d'ambiente per sicurezza.

Esempio di codice

Verifica la connessione

Esempio di codice

Non scrivere mai password direttamente nel codice: usa variabili d'ambiente o un file .env (escluso da git).

Aggiungere Dati su PostgreSQL

Dopo aver collegato il database, si applicano le migrations e si inseriscono i dati.

Esempio di codice

Inserimento via shell

Esempio di codice

Backup del database

Esempio di codice

Deploy con Elastic Beanstalk

AWS Elastic Beanstalk è un servizio che gestisce automaticamente server, scaling e load balancing per Django.

Esempio di codice

Inizializza e crea l'ambiente

Esempio di codice

Elastic Beanstalk supporta Python e Django nativamente, ed è incluso nel Free Tier con istanze t2.micro.

Il File requirements.txt

Il file requirements.txt elenca tutte le dipendenze del progetto, necessarie per il deploy.

Esempio di codice

Esempio per Django su AWS

Esempio di codice

Installare da requirements.txt

Esempio di codice

In produzione conviene fissare le versioni esatte per garantire build riproducibili.

Il File django.config

Il file .ebextensions/django.config configura il server per la tua app Django.

Esempio di codice

settings.py per la produzione

Esempio di codice

Preparare il File .zip

Per il deploy manuale dalla console AWS si crea un archivio del progetto, escludendo i file inutili.

Esempio di codice

File .ebignore

Esempio di codice

Con la EB CLI in genere non serve creare lo zip a mano: basta eb deploy.

Eseguire il Deploy con EB

Con la EB CLI il deploy si fa con pochi comandi.

Esempio di codice

Comandi utili

Esempio di codice

Aggiornare il Progetto in Produzione

Il flusso di aggiornamento parte dal test locale e arriva al deploy.

Esempio di codice

Checklist pre-deploy

  • ✅ I test passano
  • ✅ Le migrations sono create
  • DEBUG = False in produzione
  • SECRET_KEY diversa da quella di sviluppo
  • ALLOWED_HOSTS configurato
  • ✅ File statici raccolti con collectstatic

Aggiungere un Campo Slug

Lo slug è una versione URL-friendly di un testo, ad esempio mio-primo-articolo.

Esempio di codice

URL con slug

Esempio di codice

Gli slug rendono gli URL leggibili e migliorano la SEO del sito.

Aggiungere Bootstrap 5

Bootstrap 5 dà al sito Django un aspetto moderno e responsive. Il modo più semplice è la CDN.

Esempio di codice

Esempio di card Bootstrap

Esempio di codice

Vuoi approfondire? Vedi il corso dedicato a Bootstrap.

Riferimento ai Template Tag

I principali tag integrati nei template Django.

Esempio di codice

Riferimento ai Filtri

I filtri trasformano il valore di una variabile, con la sintassi {{ valore|filtro }}.

Esempio di codice

Riferimento ai Field Lookups

I field lookups si usano in filter(), exclude() e get() con la sintassi campo__lookup.

Esempio di codice

Conclusione

Complimenti! 🎉 Hai completato il corso di Django completo e gratuito in italiano: dai modelli e le view, all'ORM e il pannello admin, fino ai file statici, PostgreSQL e il deploy in produzione. Ora sai costruire applicazioni web complete con Python e Django.

Il modo migliore per consolidare Django è costruire un progetto reale: crea un blog, un e-commerce semplice o un'API REST. Rifai gli esempi, esplora i docs ufficiali e sperimenta con Django REST Framework.

E ora?

Ora che padroneggi il backend con Django, il passo successivo è imparare un framework frontend moderno come Vue.js per costruire interfacce dinamiche, oppure approfondire i database con il corso SQL. Se vuoi un percorso guidato personalizzato, posso seguirti con ripetizioni di informatica in presenza a Roma.

✏️ Provalo tu — leggi e modifica il codice Django
Anteprima