Top 13 Python Web Frameworks da imparare nel 2020

I frameworks rendono la vita degli sviluppatori più facile, offrendo loro una struttura per lo sviluppo di applicazioni. Automatizzano l’implementazione di soluzioni comuni, tagliando i tempi di sviluppo e permettendo agli sviluppatori di concentrarsi sulla logica dell’applicazione invece che sugli elementi di routine.

In questo articolo, condividiamo una lista dei migliori dodici framework web Python che saranno utili sulla tua strada per diventare uno sviluppatore backend professionista e per migliorare il tuo set di competenze esistenti.

Perché i framework Python? Stack Overflow ha recentemente rilasciato i risultati del loro sondaggio annuale sugli sviluppatori per il 2019, che ha dichiarato Python il linguaggio di programmazione principale in più rapida crescita.

source: stackoverflow.blog

Di gran lunga, i framework Python più popolari sono Django e Flask. Ma questo non significa che si dovrebbe scontare il potenziale di altri framework. Ognuno di essi possiede delle caratteristiche che potrebbero essere un abbinamento perfetto per il vostro progetto web.

fonte: jetbrains.com

Tenete a mente che i framework Python di cui parleremo qui non sono elencati in un ordine particolare: ci siamo concentrati sul mostrare cosa siete in grado di fare, invece di dirvi cosa dovreste fare.

Alcune cose da considerare

Per prima cosa, quando decidete quale framework usare, guardate la dimensione e la complessità del vostro progetto. Se quello che state cercando di sviluppare è un grande sistema pieno di caratteristiche e requisiti, un framework full-stack potrebbe essere la scelta giusta. Se la vostra app è sul lato più piccolo e semplice, dovreste probabilmente considerare un microframework.

In secondo luogo, dovete controllare se il framework che state considerando può scalare verticalmente e orizzontalmente. Questo è un must per i progetti che devono girare su diversi server, gestire enormi quantità di traffico e supportare l’aggiunta di nuove caratteristiche per migliorare la funzionalità.

Una volta scelto un framework, contatta un team di sviluppatori e chiedi loro informazioni sul costo stimato per sviluppare la tua app.

Puoi trovare informazioni sul tipo e il focus di alcuni framework qui. Una decisione finale, però, dovrebbe venire dalla vostra comprensione del vostro progetto e dei compiti che volete semplificare.

Tuttavia, i framework possono anche ostacolare lo sviluppo. Quando si sceglie un framework full-stack, spesso si firma per una serie di limitazioni. Naturalmente, puoi trovare il modo di aggirarle, ma stai attento a non passare più tempo a lottare per la tua libertà di quanto ne passeresti scrivendo un’applicazione in puro Python.

Quadri full-stack

Un quadro full-stack o un quadro aziendale è una soluzione all-in-one con librerie configurate per lavorare insieme senza problemi. Supporta lo sviluppo di servizi backend, interfacce frontend e database. Un framework full-stack fornisce tutto ciò che uno sviluppatore richiede per costruire un’applicazione. Python offre più di un framework full-stack.

Django

Sito ufficiale | GitHub | PyPI | Awesome

GitHub Stars: 44.077 | GitHub Forks: 18,949

Django è un framework Python full-stack open-source gratuito. Cerca di includere tutte le caratteristiche necessarie per impostazione predefinita, invece di offrirle come librerie separate.

Alcune delle caratteristiche esemplari di Django sono la sua autenticazione, il routing degli URL, il motore dei template, il mapper oggetto-relazionale (ORM), e le migrazioni dello schema del database (Django v.1.7+).

Queste caratteristiche rendono Django altamente scalabile, ridicolmente veloce, ed estremamente versatile.

Django usa il suo ORM per mappare gli oggetti sulle tabelle del database. Lo stesso codice funziona con diversi database e non è difficile da trasferire da un database all’altro. I principali database con cui Django lavora sono PostgreSQL, MySQL, SQLite e Oracle, ma i driver di terze parti permettono di usarne anche altri.

Con Django, è possibile creare qualsiasi applicazione web da progetti su piccola scala a siti web complessi. Grazie alla sua flessibilità, Django è anche usato per creare MVP, permettendo alle startup di ottimizzare il loro tempo e il loro budget.

La base di utenti di Django è destinata a crescere, poiché molti sviluppatori vedono questo framework come la scelta migliore per le tecnologie emergenti come l’apprendimento automatico. Inoltre, nel 2020, la comunità di Django sta progettando di rilasciare più librerie per soddisfare la crescente domanda.

Qui a SteelKiwi, usiamo Django come nostro framework principale per lo sviluppo di backend. Se vuoi vedere le incredibili applicazioni che abbiamo già sviluppato con Django, visita la nostra pagina dei progetti.

Pyramid

Sito ufficiale | GitHub | PyPI | Awesome

GitHub Stars: 3,215 | GitHub Forks: 866

Pyramid è un framework per applicazioni web open-source – e il secondo degno di nota – basato su Python. Il suo obiettivo è quello di fare il più possibile con la minima complessità. Funziona su Python 3, Pyramid sta al passo con i miglioramenti tecnologici. Pyramid 1.10 è l’attuale versione del framework ed è il decimo aggiornamento dal 2010.

La caratteristica più sorprendente di Pyramid è la sua capacità di lavorare bene con applicazioni piccole e grandi. Alcune delle grandi caratteristiche di Pyramid includono:

  • Applicazioni a singolo file
  • Generazione di URL
  • Configurazione estensibile
  • Tutte le specifiche di template e risorse
  • Autenticazione e autorizzazione flessibili
  • Test, supporto, e documentazione completa sui dati
  • Predicati di vista e molte viste per percorso
  • Decoratori di funzioni
  • Predicati
  • Renderer

Con Pyramid, uno sviluppatore può decidere il linguaggio di template, le librerie di generazione e lo strato di database.

La comunità Pyramid è attiva e vanta molti rilasci. Gli sviluppatori possono seguire i progressi del framework unendosi al canale IRC ufficiale o ai gruppi Google e Twitter.

TurboGears

Sito ufficiale | GitHub | PyPI

GitHub Stars: 654 | GitHub Forks: 65

TurboGears è un framework per applicazioni web full-stack open-source basato sui dati. È costruito su un sacco di middleware e molte librerie ed è stato inizialmente creato per combinare i migliori componenti di altri framework Python.

TurboGears permette di sviluppare rapidamente applicazioni web estensibili guidate dai dati. Viene fornito con un motore di template facile da usare e un ORM potente e flessibile. Oltre a grandi sistemi di template che rendono la vita dei progettisti più facile, TurboGears offre molta flessibilità, un forte supporto per gli aggregati, un potente ORM e frammenti riutilizzabili.

Alcune delle caratteristiche distintive di TurboGears includono:

  • Supporto per database multipli
  • Architettura stile MVC
  • Supporto per SQLObject e SQLAlchemy
  • Kid e Genshi inclusi nei linguaggi di template preferiti
  • Validazione con FormEncode
  • Piloni come server web
  • ToscaWidgets, una libreria di applicazioni che semplifica il coordinamento del design del frontend e lo sviluppo del server
  • Modelli PasteScript
  • Server basati su WSGI (Paste HTTP server, CherryPy WSGI/HTTP server, ecc.)
  • Strumenti a riga di comando
  • Integrazione della libreria JavaScript MochiKit
  • Tutte le caratteristiche implementate come decoratori di funzioni

Per quanto riguarda il futuro di TurboGears, la comunità sta attualmente lavorando per migliorare le capacità del framework e la stabilità generale e sta per rilasciare il “codice minimo”. Questo codice è anche chiamato microframework, o una versione ridotta di TurboGears. Il codice minimale aiuterà gli sviluppatori a costruire applicazioni più velocemente, risparmiando denaro e tempo.

Web2py

Sito ufficiale | GitHub | PyPI

GitHub Stars: 1,794 | GitHub Forks: 818

Web2py è un framework scalabile open-source full-stack Python. È molto potente quando si tratta di gestire i dati. Web2py è stato originariamente offerto come strumento di insegnamento con una particolare attenzione alla facilità d’uso. Questo spiega perchè non ci sono file di configurazione a livello di progetto.

La cosa più bella di Web2py, comunque, è che viene fornito con il proprio IDE basato sul web che, tra le altre cose, include un editor di codice, un debugger e un deploy con un solo click.

Altre importanti caratteristiche di Web2py includono:

  • Nessun requisito per l’installazione e la configurazione
  • Possibilità di funzionare su Windows, Mac, Linux/Unix, Google App Engine, Amazon EC2, e qualsiasi web hosting che supporti Python 2.5-2.7 o Java+Python
  • Lettura di più protocolli
  • Sicurezza dei dati che previene vulnerabilità come cross-site scripting, difetti di iniezione ed esecuzione di file dannosi
  • Successo nell’impiego di pratiche di ingegneria del software, rendendo il codice facile da leggere e mantenere
  • Tracciabilità degli errori, registrazione degli errori e ticketing
  • Controllo degli accessi basato sui ruoli
  • Supporto per l’internazionalizzazione
  • Compatibilità all’indietro che assicura un avanzamento orientato all’utente senza la necessità di perdere i legami con le versioni precedenti

Un sistema di ticketing è la caratteristica principale di Web2py; emette dei ticket ogni volta che si verificano degli errori. In questo modo gli utenti possono tenere traccia degli errori e del loro stato.

Nonostante tutti questi vantaggi, la comunità di Web2py è più piccola di quella di Pyramid o Django. Non sono molti gli sviluppatori che lo utilizzano. Questo significa che le possibilità di ricevere supporto sono minori. Inoltre la mailing list ufficiale non è molto attiva.

Microframeworks

Un microframework, o un framework minimalista per applicazioni web, manca della maggior parte delle funzionalità di un framework vero e proprio come un motore di template web, funzionalità di autenticazione, account, autorizzazione, validazione degli input e sanificazione degli stessi. Un microframework tenta di fornire solo l’insieme dei componenti richiesti per costruire un’applicazione. Può anche concentrarsi sul fornire le funzionalità necessarie per un particolare ambito.

Flask

Sito ufficiale | GitHub | PyPI | Awesome

Github Stars: 46,475 | GitHub Forks: 12,921

Flask è un framework Python disponibile sotto licenza BSD. È stato ispirato dal framework Sinatra Ruby. Flask dipende dal toolkit WSGI di Werkzeug e dal template Jinja2.

L’idea principale dietro Flask è di aiutare a costruire una solida base per le applicazioni web. Da lì, puoi usare qualsiasi estensione di cui potresti aver bisogno. Flask è scelto per qualsiasi progetto. Infatti, è una scelta predefinita per qualsiasi progetto web che non corrisponde a Django.

Il design leggero e modulare di Flask lo rende facilmente adattabile alle esigenze degli sviluppatori. Include una serie di utili caratteristiche out-of-the-box:

  • Server di sviluppo integrato e un veloce debugger
  • Supporto integrato per i test unitari
  • RESTful request dispatching
  • Jinja2 templating
  • Supporto ai cookie sicuri (sessioni lato client)
  • WSGI 1.0
  • Basato su Unicode
  • Possibilità di inserire qualsiasi ORM
  • Gestione richiesteHTTP

Dal suo lancio nel 2010, Flask è stato aggiornato 27 volte. Ad oggi, rimane il miglior framework Python in crescita. Tuttavia, molte estensioni di Flask non sono più supportate: la documentazione è obsoleta e non sono più sviluppate. Se ti imbatti in questo, dovrai cercare su Google un plug-in attivamente supportato con funzionalità simili.

Bottle

Sito ufficiale | GitHub | PyPI

GitHub Stars: 6.348 | GitHub Forks: 1,245

Bottle è un microframework. Originariamente pensato per costruire API, Bottle implementa tutto in un unico file sorgente. Non ha dipendenze a parte la libreria standard di Python. Codificare con Bottle ti porta più vicino al metallo che codificare con qualsiasi framework full-stack. Tuttavia, Bottle è adatto solo se stai creando un’applicazione molto piccola con al massimo 500 linee di codice e nessun requisito speciale.

Le sue caratteristiche predefinite includono routing, templating, utility e un’astrazione di base sullo standard WSGI.

  • Routing – supporta le richieste alla mappatura delle chiamate a funzione, permettendo di ottenere URL puliti e dinamici
  • Modelli – un motore di modelli veloce e pitonico, insieme al pieno supporto per mako, jinja2 e cheetah
  • Utilità – comodo accesso ai dati dei moduli, upload di file, cookie, intestazioni, e altri metadati relativi all’HTTP
  • Server – un server di sviluppo HTTP integrato che supporta fapws3, bjoern, GAE, СherryPy, e qualsiasi altro server HTTP compatibile con WSGI

Dal 2009, Bottle è stato aggiornato 73 volte, e ora è una soluzione perfetta per prototipare, imparare l’organizzazione dei framework web e costruire semplici applicazioni personali.

Qualsiasi contributo alla comunità Bottle è accettato tramite GitHub. Gli utenti possono anche unirsi alla mailing list e al blog di Bottle e seguire gli ultimi cambiamenti su Twitter. Se stai cercando un ulteriore forum di discussione, unisciti a una chat su Freenode.

CherryPy

Sito ufficiale | GitHub | PyPI

GitHub Stars: 1.057 | GitHub Forks: 259

CherryPy è un framework web open-source e minimalista. Rende la costruzione di applicazioni web Python non diversa dalla costruzione di qualsiasi altro programma orientato agli oggetti.

CherryPy è creato per essere estensibile. Il framework offre persino meccanismi per i punti di aggancio e le estensioni. Per esempio, un’applicazione web alimentata da CherryPy è un’applicazione Python indipendente che incorpora il proprio server web multi-thread. Con il proprio server web, i punti di estensione includono funzioni al di fuori del ciclo richiesta-risposta, aggiungendo così al livello di estensibilità di CherryPy.

In effetti, una web app CherryPy-powered è un’applicazione Python autonoma che incorpora il proprio server web multi-thread. Le app CherryPy girano su qualsiasi sistema operativo che supporti Python (Windows, macOS, Linux, ecc.). Possono essere distribuite ovunque si possa eseguire una normale applicazione Python. Non hai bisogno di Apache per le app CherryPy, ma puoi eseguire un’app CherryPy dietro Apache così come puoi eseguirla dietro Lighttpd o IIS.

CherryPy non è un framework molto limitante, in quanto ti permette di utilizzare qualsiasi tipo di tecnologia per i template, l’accesso ai dati, e così via. Tuttavia, è ancora in grado di gestire sessioni, statiche, cookie, upload di file e tutto ciò che un framework web tipicamente può fare.

Alcune delle caratteristiche predefinite di CherryPy includono:

  • Un HTTP/1.1-compliant WSGI thread-pooled webserver
  • Semplicità di eseguire più server HTTP contemporaneamente
  • Un potente sistema di configurazione
  • Un sistema flessibile di plugin
  • Strumenti out-of-the-box per caching, codifica, sessioni, autenticazione, contenuti statici, e così via
  • Supporto integrato per profiling, copertura e test
  • Possibilità di funzionare su Python 2.7+, Python 3.1+, PyPy, Jython, e Android

Nonostante tutte le sue caratteristiche e vantaggi, molti sviluppatori ritengono che la documentazione di CherryPy potrebbe essere migliorata. Inoltre, CherryPy potrebbe essere almeno un po’ più facile da usare.

Come molti altri framework, CherryPy ha una comunità alle spalle che fornisce assistenza ai principianti e agli sviluppatori avanzati. CherryPy ha una mailing list e suggerisce agli sviluppatori di unirsi al canale IRC del framework o ai gruppi Gitter e Google.

Falcon

Sito ufficiale | GitHub | PyPI

GitHub Stars: 1.057 | GitHub Forks: 259

Falcon è un framework API web Python bare-metal per costruire backend di applicazioni molto veloci. Il logo del framework è un falco, che simboleggia la velocità con cui Falcon lavora.

Questo framework permette agli sviluppatori di creare design più puliti e gestisce la maggior parte delle richieste. Falcon non limita mai gli sviluppatori nella scelta delle librerie per i database e l’autorizzazione.

Altre preziose caratteristiche di Falcon:

  • Copertura del codice al 100% con una suite di test completa
  • Una base di codice altamente ottimizzata
  • Gestione anticipata delle eccezioni
  • Classi di risorse ispirate a REST-ispirato alle classi di risorse
  • Modelli URI per routine intuitive
  • Facile accesso tramite classi di richiesta e risposta
  • Elaborazione delle richieste tramite componenti middleware componenti
  • Risposte d’errore HTTP automatiche
  • Unit testing via WSGI helpers

Falcon ignora le operazioni inutili durante lo sviluppo di un framework web. Inoltre, dà libertà di scelta: gli sviluppatori possono prendere decisioni che li aiuteranno a sintonizzare e personalizzare liberamente le implementazioni.

Altri due vantaggi degni di nota sono la disponibilità di una vasta documentazione e una comunità attiva.

Hug

Sito ufficiale | GitHub | PyPI

GitHub Stars: 5.905 | GitHub Forks: 347

Hug è un framework di sviluppo API per Python 3. È stato creato per permettere agli ingegneri del software di sviluppare un’API una volta e poi riutilizzarla ogni volta che è necessario. Il framework Hug semplifica lo sviluppo di API offrendo varie interfacce. Questo è il motivo principale per cui questo framework è chiamato uno dei più veloci in Python 3.

Caratteristiche principali di Hug:

  • Supporto per la documentazione automatica
  • Convalida alimentata dalle annotazioni
  • Gestione delle versioni integrata
  • Compatibilità con Cython
  • Può essere usato come una libreria Python

Il framework Hug contiene meno integrazioni e meno codice possibile, rimanendo funzionale e fornendo grandi prestazioni. Inoltre, la comunità di Hug è attualmente in crescita. Questo è un segno della richiesta del framework e la prova che ogni volta che si verifica un problema, uno sviluppatore può trovare aiuto.

FastAPI

Sito ufficiale |GitHub |PyPI

GitHub Stars: 4,835| GitHub Forks: 256

FastAPI è un moderno framework basato su Python. È stato inizialmente progettato per essere facile da usare per garantire la migliore esperienza di sviluppo. Ad oggi, FastAPI è uno dei framework più veloci per costruire API con Python 3.6+.

Il framework ha preso diverse caratteristiche da Flask, inclusa la sua semplicità. L’intero framework è costruito su Starlette e include la maggior parte delle sue caratteristiche (modelli, WebSockets e supporto GraphQL).

Il framework FastAPI offre:

  • Aumento della velocità di sviluppo dal 200% al 300%
  • Riduzione degli errori del 40%
  • Meno tempo per il debug
  • Minimizzazione della duplicazione del codice
  • Documentazione interattiva automatica

FastAPI non è strettamente legato a nessun database. Tuttavia, supporta i database di cui avete bisogno. Con FastAPI, sei libero di strutturare il tuo progetto nel modo che ti serve e persino di usare la maggior parte degli stessi file da uno dei tuoi progetti Flask.

L’unico svantaggio è la sua piccola comunità. Ma è perché FastAPI è un framework relativamente nuovo.

Framework asincroni

Un framework asincrono è un tipo relativamente recente di framework Python. È un microframework che permette agli sviluppatori di gestire un grande insieme di connessioni concorrenti. I framework asincroni usano socket non bloccanti e si nutrono della libreria asyncio di Python.

Sanic

Sito ufficiale | GitHub | PyPI

GitHub Stars: 12.780 | GitHub Forks: 1,203

Sanic è un framework web Python costruito su uvloop e creato specificamente per risposte HTTP veloci attraverso la gestione asincrona delle richieste.

Esegue su Python 3.5+. Sanic supporta i gestori di richieste asincrone, il che lo rende compatibile con le funzioni async/await di Python 3.5. Questo migliora la sua velocità, offrendo capacità non bloccanti.

Sonic è considerato il framework asincrono preferito nel mondo Python grazie al suo routing, middleware, cookie, versioning, file statici, blueprint, viste basate su classi e socket. Tuttavia, non offre supporto per database e template.

In un test di benchmark con un processo e 100 connessioni, Sanic è stato in grado di gestire 33.342 richieste al secondo, con una latenza media di 2,96 ms.

Tornado

Sito ufficiale | GitHub | PyPI

GitHub Stars: 18.292 | GitHub Forks: 5,040

Tornado è un framework web Python e una libreria di rete asincrona che si concentra sulla velocità e sulla capacità di gestire grandi volumi di traffico. Utilizza un I/O di rete non bloccante e risolve il problema C10k (il che significa che, se configurato correttamente, può gestire più di 10.000 connessioni concorrenti).

Questo lo rende un ottimo strumento per costruire applicazioni che richiedono alte prestazioni e decine di migliaia di utenti concorrenti.

Le caratteristiche principali di Tornado sono:

  • Supporto integrato per l’autenticazione degli utenti
  • Servizi in tempo reale
  • Prestazioni di alta qualità
  • Linguaggio di template web basato su Python
  • Client HTTP non bloccante
  • Implementazione di schemi di autenticazione e autorizzazione di terzi (Google OpenID/OAuth, Facebook Login, Yahoo BBAuth, FriendFeed OpenID/OAuth, Twitter OAuth)
  • Supporto per la traduzione e la localizzazione

In termini di popolarità, Tornado sta da qualche parte tra Django e Flask. Diciamo che volete scrivere qualcosa in Flask o Django a causa delle loro caratteristiche e strumenti, ma avete anche bisogno di prestazioni molto migliori. In questo caso, dovresti scegliere Tornado.

Altro

Dash

Sito ufficiale | GitHub | PyPI | Awesome

GitHub Stars: 9.856 | GitHub Forks: 1,011

Dash è un framework Python open-source usato per costruire applicazioni web analitiche. È particolarmente buono per gli scienziati di dati Python che non hanno molta familiarità con lo sviluppo web.

Ci sono due benefici fondamentali di Dash:

  • Ti permette di costruire applicazioni altamente interattive usando solo codice Python.
  • Rende semplice usare la potenza degli strumenti Python per manipolare i dati.

Le applicazioni Dash sono server web che eseguono Flask e comunicano con pacchetti JSON su richieste HTTP. Il loro frontend rende i componenti con React.js.

Le applicazioni sviluppate con Dash sono rese nel browser web e possono essere distribuite sui server. Questo significa anche che le applicazioni Dash sono intrinsecamente multipiattaforma e mobile-ready.

Gli sviluppatori Dash hanno accesso all’istanza Flask sottostante e a tutte le sue proprietà configurabili. Per estendere le capacità delle applicazioni Dash, gli sviluppatori possono anche usare il ricco set di Flask Plugins.

Scegliere un framework web Python

Il giusto framework potrebbe essere tutto ciò di cui hai bisogno per sviluppare un progetto di successo. Speriamo davvero che tu abbia trovato un framework interessante in questo articolo. Ne abbiamo anche un altro, i 17 migliori framework web Python del 2017, se sei interessato ad esplorare altre opzioni.

Ci piacerebbe se visitassi la nostra pagina GitHub aziendale. I nostri sviluppatori SteelKiwi si stanno impegnando a fondo per innovare il mondo della tecnologia, e più persone vengono coinvolte, meglio è.

Si può fare.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.