Che cos'è Django?

Django è un software che è possibile utilizzare per sviluppare applicazioni Web in modo rapido ed efficace. La maggior parte delle applicazioni Web ha diverse funzioni comuni, come l'autenticazione, il recupero di informazioni da un database e la gestione dei cookie. Gli sviluppatori devono codificare funzionalità simili in ogni app Web che scrivono. Django semplifica il loro lavoro raggruppando le diverse funzioni in un'ampia raccolta di moduli riutilizzabili, denominati framework di applicazioni Web. Gli sviluppatori utilizzano il framework Web Django per organizzare e scrivere il loro codice in modo più efficace e ridurre significativamente i tempi di sviluppo Web.

Perché gli sviluppatori Web scelgono Django?

Esistono diversi framework Web sul mercato. Django è stato scritto in linguaggio Python ed è uno dei tanti framework Web Python. Tuttavia, gli sviluppatori spesso preferiscono il framework Web Django rispetto ad altri per i seguenti motivi.

Velocità di sviluppo

Il framework Django è ben organizzato e semplice da installare e apprendere, quindi puoi iniziare in poche ore. I designer di Django hanno creato il framework per implementare rapidamente qualsiasi architettura Web nel codice. Questo framework supporta uno sviluppo rapido e una progettazione pulita e pragmatica. Puoi scrivere codice in poche righe in quanto Django fornisce una struttura pronta all'uso per diverse attività di sviluppo Web comuni, come:

  • Autenticazione degli utenti
  • Amministrazione dei contenuti
  • Mappe del sito
  • Feed RSS

Prezzi contenuti

Django è un progetto Python gratuito e open source con una community attiva che revisiona e mantiene il software. Un'organizzazione senza scopo di lucro chiamata Django Software Foundation promuove e sostiene l'uso e la manutenzione di Django. Organizza regolarmente incontri, riunioni ed eventi della community che incoraggiano altri sviluppatori a revisionare e contribuire al progetto Django. Il risultato è un framework Web gratuito di alta qualità e ricco di funzionalità.

Popolarità

Migliaia di progetti open source e siti di alto profilo utilizzano Django, ad esempio:

  • Instagram
  • Mozilla Firefox
  • Pinterest
  • National Geographic

Grazie alla sua popolarità, il framework continua ad evolversi e dispone di una solida infrastruttura di supporto. Molti individui e aziende forniscono supporto gratuito e a pagamento per qualsiasi problema di sviluppo che potresti incontrare quando utilizzi Django.

Come funziona Django?

Qualsiasi applicazione Web è composta da due parti: codice server e codice client. Il client o il visitatore del sito Web dispone di un browser. Quando digita un URL nel browser, invia una richiesta al computer server Web su cui è in esecuzione l'app Web. Il server elabora la richiesta utilizzando un database e invia le informazioni al client come risposta. Il codice client visualizza le informazioni per il visitatore come pagina Web.

Django gestisce il codice per questo sistema di richiesta e risposta utilizzando un'architettura MVT (Model-View-Template).

Modello

I modelli Django fungono da interfaccia tra il database e il codice server. Sono l'unica fonte definitiva di informazioni sui tuoi dati. Questi modelli di dati contengono i campi e le operazioni essenziali necessari per interagire con il database. I modelli Django convertono quindi le tabelle del database in classi o oggetti nel codice Python. Questa operazione è chiamata mappatura relazionale agli oggetti.

In genere, ogni modello viene mappato a una singola tabella di database e dispone di attributi che rappresentano i campi del database. Se, ad esempio, il sito Web comprende i dettagli dei dipendenti, potrebbe essere rappresentato come:

  • Una tabella dei dipendenti con campi per i loro nomi e indirizzi.
  • Un modello di dipendente denominato Impiegato di classe con due attributi, o campi modello, denominati Nome e Indirizzo.

Visualizza

Le viste di Django elaborano la richiesta utilizzando i modelli. Puoi scrivere una funzione di visualizzazione per ogni tipo di richiesta effettuata dai visitatori del tuo sito Web. Una funzione di visualizzazione può accettare la richiesta come input e restituire una risposta, che può essere un codice di errore, un'immagine, un file o qualsiasi tipo di dati.

Django dispone di una funzionalità di mappatura degli URL, o dispatcher di URL, che mappa le funzioni di visualizzazione agli URL. Devi creare un file di mappatura degli URL in cui scrivi i modelli di URL, come mostrato di seguito.

urlpatterns = [

path('employee/name', views.employee_name),

path('employee/<int:year>/', views.year_archive),

]

Ad esempio, se desideri che i visitatori del tuo sito Web visualizzino un elenco di tutti i tuoi dipendenti in un anno specifico, allora imposti il percorso URL employee/year number e scrivi una funzione di visualizzazione Django year_archive corrispondente. Quando il visitatore del tuo sito Web digita "yourwebsitename.com/employee/2020" nel proprio browser, si verificano i seguenti passaggi:

  1. La richiesta arriva alla tua app Web.
  2. Il framework Web Django acquisisce il numero di anno e il nome della funzione di visualizzazione dalla funzionalità di mappatura degli URL.
  3. Esegue la funzione di visualizzazione year_archive per l'anno 2020.
  4. Year_archive utilizza il modello dei dipendenti per ottenere dal database tutti i dati dei dipendenti per il 2020.
  5. Il framework Web Django invia i dati come risposta.

Modello

I modelli Django gestiscono la presentazione della pagina Web nel browser. Poiché la maggior parte delle pagine Web sono in HTML (Hypertext Markup Language), puoi scrivere il codice del modello Django in uno stile simile ad HTML. Un file modello contiene alcuni componenti:

  • Le parti statiche dell'output HTML finale, come immagini, pulsanti e intestazioni.
  • Una sintassi speciale che descrive come inserire contenuti o dati dinamici, che cambia a ogni richiesta.

I seguenti componenti costituiscono il sistema di modelli Django.

Il linguaggio dei modelli

Il linguaggio dei modelli è il linguaggio di programmazione utilizzato per scrivere il codice del modello HTML. Django supporta il proprio linguaggio per modelli Django e un'alternativa diffusa chiamata Jinja2.

Il motore di modelli

Il motore di modelli elabora il file modello e crea l'output HTML finale. Include i dati della risposta in questo output.

Ad esempio, quando il visitatore del tuo sito Web richiede informazioni sui dipendenti, il modello Django inserisce nella pagina Web visualizzata l'intestazione del tuo sito Web, una tabella che contiene i nomi e gli indirizzi di tutti i dipendenti e un pulsante Avanti.

Quali altri moduli puoi usare in Django?

Sebbene l'architettura MVT (Model-View-Template) definisca la struttura di base di qualsiasi applicazione, Django ha diversi altri moduli per migliorare il tuo sito Web. Ecco alcuni esempi.

Moduli

La maggior parte dei siti Web richiede moduli per attività come la registrazione e il pagamento o per raccogliere informazioni dal visitatore del sito Web. Django fornisce molti strumenti e librerie che puoi utilizzare per gestire i moduli del tuo sito Web. Può semplificare e automatizzare l'elaborazione dei moduli e può farlo in modo più sicuro rispetto a quando scrivi il codice autonomamente.

Django gestisce l'elaborazione dei moduli in tre modi:

  1. Creazione dei moduli mediante la preparazione e la ristrutturazione dei dati per la visualizzazione
  2. Convalida dei moduli controllando i moduli HTML sul lato client
  3. Elaborazione dei moduli ricevendo i dati inviati

Autenticazione degli utenti

I siti Web contemporanei devono autenticare e autorizzare gli utenti. L'autenticazione verifica l'identità di un utente e l'autorizzazione decide cosa può fare un utente autenticato sul sito. Django può gestire l'autenticazione per vari usi.

  • Account degli utenti
  • Autorizzazioni e flag yes-or-no che consentono agli utenti di eseguire determinate attività del sito Web
  • Gruppi di più account utente con autorizzazioni simili
  • Sessioni utente basate su cookie

Fornisce inoltre un sistema di hashing delle password configurabile e strumenti per limitare il contenuto in moduli e viste.

Amministrazione del sito

Il sito di amministrazione di Django consente di creare una pagina di amministrazione per il sito. Gli amministratori del sito possono utilizzare la pagina per creare, modificare o visualizzare i modelli di dati sul sito.

Django è un framework con opinioni?

In maniera informale, chiamiamo i framework Web "con opinione" quando impongono un processo agli sviluppatori Web. Hanno un'opinione o propongono il modo giusto per gli sviluppatori di svolgere determinate attività. Ad esempio, i framework con opinione in genere supportano lo sviluppo efficiente in settori specifici conservando una documentazione dettagliata per le attività applicative relative a quel settore.

D'altra parte, i framework senza opinione hanno meno restrizioni su come integrare i diversi componenti MVT (Model-View-Template) insieme. Sebbene siano più flessibili, causano complicazioni nell'organizzazione del codice perché più sviluppatori possono utilizzare approcci diversi alla stessa attività.

Il framework Django è in qualche modo un framework con opinioni. Fornisce una vasta gamma di componenti e include la documentazione su come gestire diversi tipi di attività di sviluppo Web. Gli sviluppatori possono utilizzare l'architettura disaccoppiata di Django per scegliere tra una vasta gamma di opzioni. Django aggiunge persino il supporto per le nuove opzioni di cui gli sviluppatori hanno bisogno.

Cos'è la sicurezza di Django?

I criminali informatici spesso prendono di mira le app Web per accedere al login degli utenti, ai dati finanziari e ad altre informazioni sensibili. Il framework Web Django offre diverse funzionalità per proteggere le tue app Web e i tuoi utenti. Seguendo le best practice di Django puoi evitare molti errori di sicurezza comuni. Ecco alcuni esempi.

Protezione da scripting cross-site

Attacchi di scripting cross-site (XSS) si verificano quando criminali informatici inseriscono codice dannoso nei browser degli utenti del sito Web. Possono attaccare gli utenti ingannando l'app Web in diversi modi, ad esempio:

  • Archiviando script dannosi nel database, in modo che il server invii inavvertitamente codice dannoso nella risposta successiva.
  • Inducendo gli utenti a fare clic su un link che causa l'esecuzione di codice client dannoso, anziché del tuo codice, nel browser dell'utente.

Ad esempio, nel modello Django, {{name}} potrebbe mostrare il testo che un utente inserisce nel campo del nome del proprio profilo. Il criminale informatico dirotta la sessione e cambia il nome in un codice, ad esempio <script>alert('hello')</script>. Il modello cambia in {{<script>alert('hello')</script>}}.

Questo codice ora viene eseguito nel browser dell'utente in modo che il messaggio di testo "Hello" venga visualizzato sullo schermo. Anche se questo esempio è semplicistico, puoi vedere come un criminale informatico potrebbe inserire script complessi per controllare il computer dell'utente.

Django ti protegge da attacchi di questo tipo evitando o ignorando caratteri specifici come < e >, che indicano un codice dannoso, nell'input dell'utente.

Protezione dagli accessi non autorizzati

Gli attacchi CSRF (cross-site request forgery) si verificano quando gli hacker rubano le credenziali degli utenti e inviano richieste non autorizzate alla tua app Web. Django ha una protezione integrata contro la maggior parte dei tipi di attacchi CSRF nel modulo CSRF di Django. Funziona inviando un valore segreto a ogni utente al primo accesso. 

Le nuove richieste dei client includono il valore segreto come prova che il client è chi afferma di essere. Poiché solo il browser dell'utente autorizzato conosce il valore segreto, Django può rifiutare automaticamente le richieste se provengono da un'altra macchina che finge di essere l'utente. È necessario attivare l'impostazione del modulo CSRF di Django affinché funzioni.

Protezione da iniezione SQL

I criminali informatici utilizzano le iniezioni SQL per inserire codice SQL nel database utilizzando richieste HTTP, ad esempio POST. Il codice dannoso può rubare o eliminare i dati autentici. Django risolve questo problema nella progettazione stessa. I dati inviati dall'utente, denominati parametri, vengono mantenuti separati dalla query del database, fino a quando non raggiungono il livello del modello. Il modello Django può quindi evitare i caratteri pericolosi quando crea il codice della query.

Protezione grazie al supporto della community

La protezione in Django va oltre le funzionalità di sicurezza integrate. Poiché Django è open source, molti sviluppatori esperti utilizzano ed revisionano i moduli Django. Test approfonditi aumentano l'affidabilità del codice Django e impediscono che le vulnerabilità accidentali della sicurezza vengano ignorate.

Cos'è la scalabilità di Django?

La scalabilità, nello sviluppo del sito Web, si riferisce alla capacità del sito Web di gestire più richieste dei client contemporaneamente. I progetti Django sono molto scalabili e possono gestire migliaia di richieste. Puoi dimensionare la tua applicazione Django nei seguenti modi.

Hardware

Il team di Django ha progettato il framework Web per utilizzare in modo efficace l'hardware del tuo sistema. Con un'architettura shared-nothing, Django separa componenti come il livello del database (i modelli) e il livello dell'applicazione (le viste). Puoi aggiungere hardware a qualsiasi livello senza influire sul resto del sistema. Puoi aggiungere più server di database o server di applicazioni nel sistema, Django utilizzerà queste risorse in modo efficace per gestire più visitatori.

Caching

La memorizzazione nella cache è il processo di salvataggio di alcuni dati di pagine Web sul server del client o su server intermediari in modo che l'app Django possa elaborare le richieste più velocemente, aumentando la scala. Django offre un sistema di memorizzazione nella cache affidabile con diversi livelli:

  1. Puoi memorizzare nella cache l'intero sito Web.
  2. Puoi memorizzare nella cache l'output della funzione di visualizzazione specifica.
  3. Puoi memorizzare nella cache contenuti specifici la cui creazione richiede molto tempo.

I progetti Django funzionano bene anche con cache di terze parti. Puoi scrivere un codice che fornisca suggerimenti su queste cache e indichi loro quale parte dell'applicazione desideri memorizzare.

In che modo AWS può aiutarti a supportare le applicazioni Web Django?

AWS Elastic Beanstalk è un servizio intuitivo per l'implementazione e il dimensionamento di applicazioni e servizi Web sviluppati con tecnologie come Django, Python, Java, .NET, PHP, Node.js, Ruby, Go e Docker su server familiari come Apache, Nginx, Passenger e IIS.

Elastic Beanstalk supporta gli sviluppatori di Django nei seguenti modi:

  • Carichi il tuo codice Django ed Elastic Beanstalk gestisce automaticamente l'implementazione.
  • Elastic Beanstalk effettua il provisioning, controlla l'infrastruttura e gestisce lo stack delle applicazioni (piattaforma) per l'utente, che così non deve impiegare tempo per acquisire competenze.
  • Elastic Beanstalk dimensiona automaticamente l'applicazione in base alle esigenze specifiche, utilizzando le impostazioni regolabili di Dimensionamento automatico.

Inizia a implementare un'applicazione Django su Elastic Beanstalk creando un account AWS gratuito oggi stesso.

Fasi successive di Django in AWS

Registrati per creare un account gratuito

Ottieni accesso istantaneo al piano gratuito di AWS. 

Registrati 
Inizia a lavorare con la console

Inizia subito a sviluppare nella Console di gestione AWS.

Accedi