
Python frameworks
L’articolo fornisce una panoramica abbastanza dettagliata dei Python frameworks per il web. Ne abbiamo parlato in maniera più sintetica invece qui.
Se siete degli sviluppatori web Python professionisti, probabilmente siete già a conoscenza della natura solida e competitiva dell’ecosistema di sviluppo web di Python. Se avete recentemente completato un progetto di applicazione web e state cercando di valutare lo stato attuale dei Python frameworks per lo sviluppo web, siete atterrati nel posto giusto.
Sia che stiate sviluppando applicazioni web full-stack o backend web API-only, Python ha delle opzioni. In questo articolo, vedremo tutto sui Python frameworks per il web e in che modo differiscono dalle librerie. Daremo anche un’occhiata ad alcuni dei framework più popolari e a come vengono solitamente utilizzati.
Nota bene: sebbene Python sia utilizzato in molti ambiti diversi, questo articolo considera solo i Python frameworks per lo sviluppo di applicazioni web. Esiste anche un gruppo potente di framework Python per l’analisi dei dati (Data Analyst e Data Scientist), ma sono una tipologia di Python frameworks molto distinta e non saranno trattati qui.
Che cos’è un Python frameworks?
Rivediamo brevemente cos’è un framework e in che cosa si differenzia da una libreria.
Una libreria è qualcosa che si include nelle dipendenze del proprio script o applicazione per sfruttare il codice che qualcun altro ha scritto in precedenza. Lo si usa per eseguire un certo compito specializzato, come stringhe di formato, codificare o decodificare URL o gestire timestamp e fusi orari.
Una libreria è in un certo senso “usa e getta”: proviamo una libreria, non ci piace, la rimuovi e proviamo qualcosa di nuovo.
Un framework web è uno strumento più completo che fornisce convenzioni, una struttura e API per la creazione di un’intera applicazione, nonché codice e librerie per gestire attività di livello inferiore. Queste attività di livello inferiore in genere includono l’acquisizione di richieste HTTP e la loro consegna al codice per la gestione, la mappatura degli URL richiesti alle funzioni nell’applicazione e l’abilitazione del middleware per applicare un’elaborazione aggiuntiva di richieste e risposte HTTP. Alcuni framework includono anche strumenti per lavorare con i dati, come object-relational mapper (ORM), generazione e convalida di moduli e strumenti per l’autenticazione e l’autorizzazione.
Ecco un buon modo per distinguere le librerie dai framework:
- Inseriamo una libreria nella nostra applicazione.
- Inseriamo la nostra applicazione in un framework.
Un framework comporta un impegno più serio di una libreria. Una volta scelto uno, passare a un altro potrebbe essere impegnativo.
Ogni web Python frameworks si colloca da qualche parte su uno spettro tra due estremi :
- I framework completi (alias framework “batterie incluse”) raggruppano l’intero set di componenti coinvolti nello sviluppo web, come un motore di template, ORM, convalida di form, autenticazione, autorizzazione e amministrazione. Gli sviluppatori di questi framework prendono molte decisioni al nostro posto, lasciandoci scrivere codice all’interno del percorso scelto. Questi framework di solito funzionano meglio quando creiamo applicazioni aziendali funzionalmente simili.
- I microframework tendono a fornire solo la funzionalità di base, che è in genere limitata alla gestione delle richieste HTTP e al routing degli URL. Danno agli sviluppatori la libertà di scegliere autonomamente gli altri componenti delle loro applicazioni web. I microframework più popolari sono naturalmente dotati di un ricco set di estensioni della community che consentono di collegare i componenti di propria scelta.
I migliori Python frameworks
Recenti sondaggi di JetBrains e Stack Overflow indicano che ci sono tre leader distinti tra i framework Python attualmente: Django, Flask e FastAPI. Tutti gli altri Python frameworks web non si avvicinano alle quote di mercato detenute da questi tre. Vediamoli nel dettaglio.
Django
Django è il framework web full-stack più popolare nell’ecosistema Python. Rilasciato per la prima volta nel 2005, è uno dei Python frameworks web più vecchi ec utilizzati attivamente, vantando una quota di mercato del 40% nel 2023. Quando vogliamo usare un framework per sviluppare sia il backend che il frontend della tua applicazione, Django è una scelta naturale.
Django è un archetipo di framework completo; è ricco di funzionalità e tende a fornire strumenti pronti all’uso per ogni fase del processo di sviluppo di applicazioni web. Questi includono mapping object-relational, creazione di template, gestione e autenticazione degli utenti, convalida dei form, memorizzazione nella cache e persino un pannello di amministrazione. Tuttavia, gli sviluppatori spesso definiscono Django “opinato”, e ha un costo. Ogni volta che non siamo completamente soddisfatti di un componente fornito con Django, sostituirlo con un componente di terze parti può essere una sfida.
Per chi ha appena iniziato a usare Django, la curva di apprendimento potrebbe essere ripida, ma una volta imparato, si hanno a disposizione molti strumenti pronti all’uso. Fortunatamente, grazie alla lunga storia e alla popolarità del framework, Django ha una buona community ma ormai maturo per il suo utilizzo.
Django è supportato dalla Django Software Foundation e vanta numerosi collaboratori attivi , il che indica che il framework è destinato a durare e verrà mantenuto a lungo termine.
Django è un’ottima scelta se lavoriamo per un negozio di sviluppo web che crea molte applicazioni CRUD lato server simili. Può anche essere una buona scelta per applicazioni web personalizzate più grandi con uno schema di database relativamente semplice che non richiede prestazioni di database di fascia alta.
Tuttavia, se vogliamoavere un controllo dettagliato sui componenti che stiamo utilizzando nelle tnostre applicazioni web, Django potrebbe non essere la scelta migliore. Inoltre, creare query di database avanzate utilizzando Django ORM può essere problematico .
Flask
Con una quota di mercato del 38%, Flask è popolare quanto Django, ma si colloca all’estremità opposta dello spettro dei framework. È un microframework piccolo, minimalista ed estensibile che si concentra sul rendere facile l’avvio.
Flask non impone l’utilizzo di librerie particolari o di un layout di progetto; al contrario, consente agli sviluppatori di scegliere i loro plugin preferiti per il mapping object-relational, la convalida dei form, il caching e altre funzioni del framework web. Alcune delle estensioni Flask più popolari includono Flask-SQLAlchemy , Flask-Caching , Flask-Admin , Flask-Login e Flask-Security .
Poiché Flask non impone componenti specifici, è uno dei framework più adatti per applicazioni con schemi di database complessi e molta aggregazione di dati. Flask consente di collegare facilmente SQLAlchemy come ORM, che è la scelta migliore per tali applicazioni.
Flask è una buona soluzione per lo sviluppo di API che servono frontend separati e per lo sviluppo di applicazioni web full-stack se si collega il motore di template Jinja2 .
Gli sviluppatori elogiano Flask per la sua documentazione chiara, concisa e ben consultabile , che probabilmente ci farà risparmiare tempo prezioso quando rimaniamo bloccati.
Flask è gestito dal team Pallets . Sebbene non abbia una base di contributori così ampia come la Django Software Foundation, ha comunque un sano gruppo di manutentori attivi .
FastAPI
FastAPI è il più giovane dei tre principali Python frameworks per il web. Fondato nel 2018, è rapidamente salito in cima alla classifica ed è ora considerato il framework di riferimento per la creazione di API velocissime. È anche uno dei framework più ammirati. Secondo l’ultimo sondaggio tra sviluppatori di Stack Overflow , il 64,49 percento degli sviluppatori che hanno provato FastAPI ha affermato di volerlo utilizzare di nuovo.
FastAPI si colloca costantemente al vertice o quasi dei benchmark prestazionali tra i framework web Python.
FastAPI è progettato per usare suggerimenti di tipo Python, che aiutano a minimizzare gli errori nelle prime fasi dello sviluppo. Supporta anche la programmazione asincrona out of the box, rendendolo una scelta solida per le applicazioni in tempo reale.
Un’altra caratteristica di spicco di FastAPI è la generazione automatica di documenti API interattivi basati su Swagger UI . Poiché FastAPI utilizza suggerimenti di tipo Python, la documentazione generata tiene conto delle restrizioni di tipo. Ad esempio, se si testa un endpoint con un valore del tipo sbagliato, non sarà possibile effettuare la richiesta.
Uno dei rischi più evidenti associati a FastAPI è che viene creato e gestito principalmente da un singolo sviluppatore, senza alcun supporto aziendale o da parte di sponsor.
Pyramid
Rilasciato per la prima volta nel 2008, Pyramid è un framework Python consolidato che si propone di adattarsi bene alle applicazioni web in ogni fase del loro ciclo di vita.
Pyramid è spesso apprezzato per la sua flessibilità. È un framework di convenzione sulla configurazione con impostazioni predefinite ragionevoli che gli sviluppatori possono sovrascrivere se necessario. Nello spettro dei framework, si colloca a metà strada tra Django, ricco di funzionalità ma fortemente opinabile, e Flask, minimalista ma collegabile.
Pyramid non richiede un database specifico, una libreria di moduli o una sintassi di template. Puoi usare Chameleon, Jinja2 e Mako per i template, SQLAlchemy o ZODB per la persistenza dei dati e librerie come Deform per la generazione di form. Pyramid fornisce anche modi per impostare test unitari e funzionali come parte del suo impegno per un’elevata copertura di test. Tutte queste scelte possono essere fatte quando si usa lo strumento di scaffolding di Pyramid per essere guidati nella creazione di un progetto con i propri componenti preferiti.
Uno svantaggio evidente di Pyramid è il suo utilizzo: secondo il rapporto JetBrains State of Developer Ecosystem nel 2023 , è utilizzato solo dal 2% degli sviluppatori Python. Un utilizzo inferiore di solito significa meno Q&A che possiamo cercare su Google, tempi di attesa più lunghi per l’aiuto della community e meno plugin mantenuti attivamente. Questo svantaggio, tuttavia, è in qualche modo compensato da una documentazione completa e molto ponderata .
Bottle
Bottle è un microframework Python in circolazione dal 2009. Fornisce routing URL, un motore SimpleTemplate integrato, supporto per altri motori di template come Jinja2 e Cheetah e comode API per accedere ai dati dei form, ai caricamenti di file e ai cookie.
Bottle non ha dipendenze rigide se non la libreria standard Python ed è noto per la sua sintassi pulita e leggibile. Nello spettro dei framework, è paragonabile a Flask ma più facile da avviare.
Bottle è più adatto per la prototipazione e la creazione di applicazioni web più piccole. Come indicato nella sua documentazione , mentre è possibile aggiungere più funzionalità e creare applicazioni più complesse con Bottle, ci sono framework con un supporto di upscaling molto migliore.
CherryPi
CherryPy è il framework più datato di questa rassegna: è stato rilasciato per la prima volta nel 2002.
Autodefinitosi un framework web Python minimalista, si concentra sull’orientamento agli oggetti e consente di scrivere applicazioni web in modo molto simile a qualsiasi altro programma Python orientato agli oggetti.
CherryPy è più vicino ai microframework nello spettro dei framework, sebbene abbia componenti integrati per la memorizzazione nella cache, l’autenticazione e la gestione delle sessioni. Non raggruppa alcun componente di accesso al database, suggerendo invece ORM di terze parti come SQLAlchemy o SQLObject. Lo stesso vale per i motori di template. Sfortunatamente, per le ricette di integrazione di template e database, la documentazione di CherryPy rimanda a risorse esterne che non sono più disponibili.
La comunità online attorno a CherryPy non mostra molti segni di vita. Questo significa che sarà difficile trovare aiuto esterno quando rimaniamo bloccati.
Come scegliere un Python frameworks
Quando scegliamo un framework per il nostro prossimo progetto, vanno tenuti in considerazione i seguenti fattori per guidare la nostra decisione:
- Successo passato con un framework specifico: se il tuo framework attuale funziona per te e il tuo team e la tua prossima applicazione web non sarà concettualmente diversa dalle tue applicazioni passate, allora affidati semplicemente alla tua esperienza.
- Stile di sviluppo web: svilupperai un’applicazione web full-stack, renderizzata dal server, che include sia il client sia il server, oppure ti concentrerai sullo sviluppo di un’API per servire un frontend separato?
- Livello di controllo preferito: ti trovi a tuo agio con un framework che definisce i componenti da utilizzare oppure preferisci avere più controllo e scegliere tu stesso i componenti?
- Preferenza ORM: SQLAlchemy è l’ORM preferito da molti nella comunità Python. Django è dotato del suo ORM, che va bene per la maggior parte dei casi d’uso, ma può essere difficile da usare quando si eseguono molte aggregazioni di dati o quando le prestazioni della connessione al database sono critiche. Sebbene esistano modi per far funzionare SQLAlchemy con Django, se usare SQLAlchemy è un requisito importante per la tua prossima applicazione web, potresti trovare meglio un framework di sviluppo web diverso.
Ecco una tabella per aiutarti a prendere la decisione:
Struttura | Consideriamo l’utilizzo se | Pensiamoci due volte prima di usare se |
Django | Criamo molte applicazioni CRUD simili per vari client Preferiamo l’approccio “batterie incluse”, in cui un framework suggerisce i componenti per te Le nostre applicazioni vanno bene con il rendering lato server e non richiedono frontend avanzati Dobbiamo far crescere il nostro team di sviluppo e integrare rapidamente nuovi sviluppatori Vogliamo investire in un framework supportato da sponsor e dalla community e che sia sicuro che rimanga aggiornato nel prossimo futuro | Le massime prestazioni sono un requisito fondamentale per la nostra applicazione. Prevediamo di lavorare su un’applicazione ricca di dati con molta aggregazione di dati. Ci piace avere molta libertà nella scelta dei componenti del nostro framework web. |
Flask | Vogliamo un maggiore controllo sui componenti che puoi utilizzare nel framework di tua scelta. Prevediamo di lavorare su un’applicazione ricca di dati con molta aggregazione di dati. Dobbiamo far crescere il nostro team di sviluppo e integrare rapidamente nuovi sviluppatori Vogliamo scegliere un framework che sia ben gestito da un team dedicato. | Preferiamo framework basati su opinioni che suggeriscono l’intero set di componenti da utilizzare nelle nostre applicazioni |
APIFast | Hai bisogno delle massime prestazioni tra tutti i framework Python più diffusi. Hai un team frontend pronto a creare esperienze frontend avanzate con framework basati su JavaScript come React o Vue. | Vogliamo sviluppare applicazioni web monolitiche con rendering lato server Vogliamo avere la certezza che il framework da te scelto verrà mantenuto a lungo termine |
Pyramid | Vogliamo trovare un migliore equilibrio tra framework completi e opinionisti e microframework minimalisti | Dobbiamo assumere rapidamente sviluppatori che abbiano esperienza con il framework da noi scelto |
Bottle | Stiamo per creare più prototipi di applicazioni rapide | La nostra prossima applicazione è fortemente definita nell’ambito e si prevede che crescerà in complessità |
CherryPi | Il nostro team ha una notevole esperienza pregressa con il framework | Tutti gli altri scenari |
Riepilogo
Se siamo uno sviluppatore web Python professionista e stiamo cercando di scegliere un framework per il nostro prossimo progetto, questo articolo ha fornito una panoramica concisa dell’attuale panorama dei framework web, insieme a suggerimenti pratici per aiutare a prendere una decisione consapevole.
Django, Flask e FastAPI sono i framework leader del momento, ma se questi tre non vi soddisfano, ci sono alcuni framework meno popolari che potremmo prendere in considerazione.
(fonte)
Innovaformazione, scuola informatica specialistica promuove la cultura dello sviluppo web utilizzando anche i framework Python. Nell’offerta formativa rivolto solo alle aziende trovate:
INFO: info@innovaformazione.net – Tel. 3471012275 (Dario Carrassi)
Vuoi essere ricontattato? Lasciaci il tuo numero telefonico e la tua email, ti richiameremo nelle 24h:
Articoli correlati

Arriva Java 25

Cosa è Salesforce Marketing Cloud

Cosa è SAP S/4 HANA e differenze con SAP ECC

Visual Studio 2026

Albania AI diventa Ministro
