django vs flask vs node
Flask e Django sono framework di sviluppo web basati su Python. Questo tutorial confronta Django vs Flask in dettaglio. Flask vs Node è anche trattato brevemente:
È sempre stato un dilemma pervasivo quando si tratta di scegliere un Framework per il tuo prossimo progetto. Ogni pochi mesi, vedi nuove tecnologie e un framework che supera la debolezza del precedente che hai utilizzato.
Una struttura è più simile a una cultura silenziosa e una serie di convenzioni che è necessario seguire per essere più rilevanti e produttivi in questo mondo in continua evoluzione della tecnologia. In confronto, lo sviluppo Web si muove molto più velocemente dello sviluppo desktop.
=> Leggere attraverso la serie di formazione Flask
Cosa imparerai:
Django Vs Flask
In questo tutorial, disegniamo un confronto tra Django e Flask in dettaglio. Flask e Django sono framework di sviluppo web basati su Python. Molti si stanno muovendo verso microframework leggeri. Questi framework sono agili, flessibili, piccoli e aiutano a sviluppare microservizi e applicazioni serverless.
Considerando la popolarità di NodeJS, abbiamo anche fornito un confronto prodigio tra Flask e Node nella sezione Flask vs. Node. La valutazione di Django e Flask sulle seguenti funzionalità ti aiuterà a selezionarne una rispetto all'altra.
Amministratore predefinito
Entrambi i framework forniscono un'applicazione di amministrazione bootstrap. In Django, è integrato e viene fornito con l'installazione predefinita. Tuttavia, nel caso di Flask, è necessario installare Flask-Appbuilder per avere un'interfaccia di amministrazione.
Nel frattempo, ricordati di creare un superutente in Django e un amministratore nel caso di Flask in modo da poter accedere al backend dell'amministratore utilizzando il browser.
Database e ORMS
Django viene fornito con un ORM integrato predefinito che supporta completamente l'interazione con RDBMS come Oracle, MySQL, PostgreSQL, SQLite, ecc. Questo ORM supporta anche la generazione e la gestione delle migrazioni. È relativamente più comodo creare modelli di database con convalide integrate.
Flask inoltre non impone alcun metodo particolare ed è disponibile per essere utilizzato con varie estensioni che supportano funzionalità simili come delineato nel caso di Django. Abbiamo fornito esempi di Flask-SQLAlchemy, Flask-Migrate, Flask-MongoEngine, in uno dei tutorial della serie.
Viste e percorsi
Entrambi i framework hanno meccanismi per dichiarare viste basate su metodo e basate su classi. Nel caso di Django, le rotte e le viste sono menzionate in file separati. Inoltre, dobbiamo sempre passare esplicitamente l'oggetto della richiesta.
D'altra parte, in Flask, possiamo usare un decoratore per menzionare le rotte per i corrispondenti gestori. L'oggetto richiesta in Flask è globale ed è disponibile solo senza alcun passaggio esplicito. Abbiamo dettagliato i concetti di utilizzo delle viste e dei percorsi in uno dei nostri tutorial.
Moduli e modelli
I moduli Django sono integrati nel framework e non richiedono installazione. I moduli sono piuttosto essenziali per le applicazioni e in Django i moduli possono essere passati ai tag dei modelli e sono disponibili per il rendering nei modelli. Tuttavia, nel caso di Flask, dobbiamo usare Flask-WTF.
Abbiamo anche utilizzato Flask-Appbuilder per creare moduli. Inoltre, WTF-Alembic può essere utilizzato per generare moduli HTML basati su modelli di database.
Entrambi i framework supportano i modelli Jinja2 ed entrambi supportano il servizio di file statici con funzioni integrate per generare gli URL delle risorse ed è un modello abbastanza comune in tutti i framework di questi tempi.
Sebbene ci siano diversi modi per passare le variabili e per eseguire il rendering dei modelli nei loro particolari metodi di visualizzazione, entrambi i framework hanno la stessa sintassi di accesso alle variabili nei modelli.
Flessibilità
Django, a causa delle sue dimensioni e complessità, è meno flessibile di Flask. Flask può essere facilmente esteso con l'aiuto di un vasto numero di estensioni che supporta. Pertanto, è necessario più tempo e impegno per configurare Flask perché è necessario valutare più estensioni.
La libertà data agli sviluppatori in un certo senso si traduce in uno sviluppo e una consegna più lenti. D'altra parte, Django segue una serie di convenzioni già stabilite e segue gli archetipi che richiedono meno deviazioni dagli scopi e dagli obiettivi del progetto.
Curva di apprendimento
Richiede quasi la stessa quantità di tempo per imparare sia Django che Flask. Flask ha un'API più piccola; pertanto, le persone potrebbero essere in grado di finirlo più velocemente per quanto riguarda il framework principale. Diventa altrettanto impegnativo quando si tratta di utilizzare le sue estensioni. Potrebbe diventare presto complicato.
Tuttavia, solo perché tutto non è racchiuso in un unico pacchetto, è più facile praticare la separazione delle preoccupazioni nel caso del framework Flask.
Ti consigliamo di imparare gli schemi e non la sintassi che viene seguita. Sia Django che Flask hanno un'ottima documentazione. Puoi seguirlo facilmente mentre sviluppi una funzionalità.
Dimensioni e durata del progetto
Quando lavori a un progetto più ampio con team più grandi, è meglio trarre vantaggio dalla maturità di Django e dall'ampio supporto dei collaboratori che ha. Se il tuo progetto è più piccolo e richiede un numero inferiore di sviluppatori, è meglio andare con Flask.
Inoltre, se il tuo progetto durerà a lungo, Django è la scelta giusta; in caso contrario, puoi selezionare Flask.
Tipo di applicazione
In precedenza Django era considerato la scelta giusta quando era necessario disporre di applicazioni web a tutti gli effetti su scala aziendale. Ma oggi Flask è altrettanto maturo e può servire bene per le stesse condizioni.
Tuttavia, gli sviluppatori tendono a scegliere Flask di più per lo sviluppo di siti Web piccoli o statici o durante l'implementazione rapida per fornire servizi Web API RESTful.
Reclutamento di sviluppatori
Avere risorse qualificate nella convenzione del framework che utilizzi ripaga. Puoi aspettarti uno sviluppo più rapido, test più rapidi, consegne più rapide e risoluzioni dei problemi più rapide.
È abbastanza facile trovare nuovi sviluppatori nel caso di Flask. Tuttavia, è difficile trovare risorse qualificate in Django. Non ce ne sono molti pronti per essere assunti dagli sviluppatori Django. Inoltre, il framework Django è piuttosto vecchio e, quindi, la maggior parte dei nuovi assunti è costoso da assumere rispetto a quelli che sono esperti nel framework Flask.
Anche i neolaureati tecnici stanno acquisendo framework leggeri come Flask perché le tendenze del settore sono verso la creazione di applicazioni con microservizi disaccoppiati o la tecnologia che supporta la creazione dell'implementazione serverless. Javascript è ampiamente utilizzato insieme ai framework che sono più facili da usare e sono più popolari.
Open Source
Sia Flask che Django sono progetti open source. Puoi trovare Django su https://github.com/django/django e Flask su https://github.com/pallets/flask. Guardando questi progetti, il numero di contributori a Django è abbastanza più ampio di quelli che contribuiscono a Flask.
Pertanto, possiamo aspettarci un supporto maggiore e più rapido se abbiamo alcuni problemi e domande che necessitano di risoluzione. Contrariamente alle tipiche ipotesi, il numero di utenti del progetto Flask è superiore a quello di Django.
Un fatto preoccupante su Flask è che potrebbe non esserci un'estensione stabile per un'attività particolare. Pertanto, il lavoro di filtraggio del migliore rimane con l'utente dell'estensione.
Per esempio, abbiamo utilizzato Flask-Twitter-oembedder per lavorare con l'API di Twitter nell'ultimo tutorial, ma questa estensione presentava alcuni problemi a causa dei quali dovevamo passare da Flask-Cache a Flask-Caching.
Abbiamo persino dovuto includere una dichiarazione di installazione personalizzata per installare Flask-twitter-oembedder dal nostro repository Github aggiornato piuttosto che menzionarlo nel nostro file requrements.txt del progetto.
La manutenzione frequente è una tipica sfida che dovrai affrontare con un progetto open source. Il supporto e la gestione del progetto open source sono solitamente legati a servizi a pagamento. Potrebbe essere necessario attendere molto tempo per ottenere alcuni problemi risolti dai collaboratori del progetto.
Prestazione
Il framework Flask è più leggero di Django e offre prestazioni migliori con differenze trascurabili, soprattutto considerando le operazioni di I / O.
Dai un'occhiata ai confronti riportati di seguito. Con l'aumento delle richieste, le prestazioni di Flask rimangono quasi le stesse. Tuttavia, Django impiega più tempo per eseguire il rendering dei modelli dopo aver recuperato i dati utilizzando l'ORM.
Python Flask vs Django: un confronto tabulare
# | Caratteristiche | Django | Borraccia |
---|---|---|---|
7 | Interpolazione variabile nei modelli | In templates / demo.html {{tempvar}} | In templates / demo.html {{tempvar}} |
1 | Amministratore predefinito | Backend di amministrazione integrato | Installa Flask-Appbuilder |
Due | Abilita amministratore predefinito | In settings.py, assicurati di rimuovere il commento dall'app installata dall'amministratore. ... # Definizione dell'applicazione INSTALLED_APPS = ( 'sito web', 'django.contrib.admin', # altro codice ) ... | Importa AppBuilder e SQLA da flask_appbuilder, inizializza prima il DB e poi Appbuilder da flask import Flask da flask_appbuilder importa AppBuilder, SQLA app = Flask (__ name__) db = SQLA (app) appbuilder = AppBuilder (app, db.session) |
3 | Crea utente amministratore | python manage.py creauperuser | flask fab create-admin |
4 | Database e ORMS | ORM integrato per RDBMS Usa Django-nonrel per i backend NoSQL | Installa Flask-SQLAlchemy Un'estensione Flask specifica per NoSQL come Flask-MongoEngine |
5 | Viste e percorsi | URLConf in urls.py dal percorso di importazione django.urls dalle viste .import urlpatterns = ( percorso ('/ percorso', views.handler_method), # altri URL e gestori ) | Utilizzare il decoratore @ app.route ('/ path') su Views per mappare un percorso con una funzione. @ app.route ('/ percorso') def handler_method (): # altro codice con ulteriore logica |
6 | Modelli di rendering | In visualizzazioni da django.shortcuts importa render def example_view (richiesta): tempvar = 'value_for_template' restituire il rendering ( richiesta, 'Demo.html', {'Tempvar': tempvar} ) | In visualizzazioni a partire dal . importa app dalla richiesta di importazione del pallone da flask import render_template @ app.route ('/ percorso') def demo (): tempvar = 'value_for_template' return render_template ( 'Demo.html', temp_var = temp_var ) |
8 | Flessibilità | Meno flessibile | Più flessibile |
9 | Decisioni di progettazione | Meno decisioni di progettazione con gli sviluppatori. | Più libertà per gli sviluppatori. |
10 | Deviazione del progetto | Minore deviazione dagli obiettivi del progetto. | Più deviazione dovuta alla libertà data agli sviluppatori. |
undici | Dimensioni di Codebase | Codebase più grande | Codebase più piccolo |
12 | No di API | Più API | Meno API |
13 | Tipo di applicazione | Applicazioni Web a tutti gli effetti | Applicazioni / microservizi più piccoli |
14 | Applicazioni RESTful | Framework REST Django per applicazioni RESTful. | Utilizza le seguenti estensioni per le applicazioni RESTful. Flask-RESTful Flask-RESTX Login |
quindici | Prestazione | Prestazioni lente quando il numero di richieste è elevato. | Prestazioni costanti in tutto. |
16 | Contributi Open Source | Più numero di fork, orologi e commit. | Numero inferiore di fork, orologi e commit. |
17 | Sviluppatori | Richiede sviluppatori esperti e non sono facilmente disponibili per il reclutamento. | La maggior parte degli sviluppatori ha meno esperienza e si trova in numero adeguato. |
Flask Vs Node
Per quanto riguarda lo stack di sviluppo web, risulta che lo sviluppo per il web richiede una fusione di varie tecnologie. Dobbiamo suddividere un'applicazione web in frontend e backend. La parte front-end dell'applicazione è sviluppata al meglio nelle tecnologie che vengono eseguite nel browser, come JavaScript, HTML e CSS.
In generale, il backend è sviluppato in linguaggi adatti al lato server e possono interagire con il sistema operativo sottostante, i database connessi o la rete quando richiesto.
Tuttavia, un framework basato su JavaScript chiamato NodeJS ha cambiato la vista sopra indicata e ha consentito agli sviluppatori di avere coerenza e uniformità tra lo sviluppo front-end e back-end per le applicazioni web. Gli sviluppatori potrebbero sviluppare per il back-end utilizzando JavaScript.
In questa sezione Flask vs Node, confrontiamo Flask, che è un framework basato sul linguaggio di programmazione Python, con Node, che si basa sul runtime JavaScript di Chrome su vari criteri come architettura, velocità, supporto della comunità, ecc.
# | Criteri | Borraccia | Nodo |
---|---|---|---|
7 | Debug | Più facile eseguire il debug con il debugger Python senza dipendenze. | Richiede uno sforzo maggiore. Più facile con un IDE di sviluppo con Bluebird / Promise Library. |
1 | Language Runtime | Pitone | Motore JavaScript V8 di Chrome |
Due | Architettura | L'I / O non bloccante richiede l'uso di server web non bloccanti come gunicorn. Categoria Microframework (back end). | Fornisce intrinsecamente I / O non bloccante. Categoria Fullstack |
3 | Package Manager | pip | sopra il livello del mare |
4 | Velocità | Più lento a causa di un interprete Python separato. | Più veloce grazie al compilatore Just-In-Time. |
5 | Open source | sì | sì |
6 | Supporto comunitario | Su Github 2.3 K Orologi 51,4 K stelle 13,7 K Forks | Su Github 2.9 K Orologi 71,9 K stelle Forcelle da 17,6 K. |
8 | Manutenzione | Bassa manutenzione | Maggiore manutenzione |
9 | Applicazioni in tempo reale | Intrinsecamente non adatto. Tuttavia, può funzionare insieme a socket.io per casi d'uso in tempo reale. Usa l'estensione Flask-socketio. | Adatto a causa dell'architettura basata sugli eventi e dei moduli di streaming. Intrinsecamente asincrono. |
10 | Biblioteche | Più maturo e stabile. | Meno maturo e stabile ma all'interno di versioni attive di sviluppo e correzione. |
undici | Qualità del codice | Viene creato esclusivamente per il back-end. | A volte è compromesso a causa di nuovi sviluppatori front-end che passano al backend. |
12 | Composizione del team di sviluppatori | I team sono generalmente composti da sviluppatori back-end e sviluppatori front-end. Le preoccupazioni sono separate. | Gli sviluppatori possono scambiarsi i ruoli e lavorare sia per il front-end che per il back-end. |
13 | Integrazione con il sistema e le applicazioni esistenti | Più facile da integrare con altre applicazioni backend legacy esistenti utilizzando l'ecosistema Python per applicazioni di machine learning e big data. | Abbastanza nuovo e richiede la creazione di librerie personalizzate o nuove per l'integrazione con altre applicazioni esistenti. |
Domande frequenti
D # 1) Cosa dovrei imparare prima, Django o Flask?
Risposta: È meglio andare prima con Flask. Una volta acquisita una piccola esperienza nello sviluppo web, puoi iniziare a utilizzare Django. Django presume che tu sappia già come funzionano le applicazioni web e si prende cura della maggior parte delle funzionalità da solo.
D # 2) Flask o Django sono migliori?
Risposta: Sia Flask che Django sono eccellenti e adatti al loro scopo. Django viene utilizzato per creare applicazioni più importanti su scala aziendale. Flask viene utilizzato per creare applicazioni statiche e più piccole. Flask è adatto anche per la prototipazione. Tuttavia, con l'uso delle estensioni Flask, possiamo creare anche applicazioni di grandi dimensioni.
D # 3) Quali aziende utilizzano Flask?
qual è il sistema operativo più recente
Risposta: Alcune delle società che utilizzano Flask sono Reddit, Mailgun, Netflix, Airbnb, ecc.
D # 4) Quali siti usano Django?
Risposta: Alcuni dei siti che utilizzano Django sono Instagram, Spotify, YouTube, Dropbox, Bitbucket, Eventbrite, ecc.
Conclusione
Non dovremmo davvero fissarci a lungo con un framework. Dovremmo essere pronti ad apprendere nuovi set di tecnologia e ad adottare gli stack di tendenza là fuori. Alcuni di noi vogliono approcci relativamente fuori dagli schemi, inclusa la batteria con cicli di rilascio rigidi, mantenendo una compatibilità con le versioni precedenti più stretta, ecc.
Se pensi di appartenere di più a questo gruppo, allora devi scegliere Django. Tuttavia, è incredibile seguire anche le nuove funzionalità e la flessibilità del framework Flask. Quando vuoi mantenere la coerenza tra il front-end e il back-end puoi scegliere un framework full-stack come NodeJS.
Andare con un framework è più una scelta che dipende dal contesto e dai problemi che cerchiamo di risolvere. La selezione di un framework è sempre difficile. Ci auguriamo di aver presentato i punti di revisione essenziali in questo tutorial e ti aiuterà a finalizzare un framework. Tuttavia, consigliamo di imparare entrambi i framework.
È più facile iniziare con Flask e poi passare a Django dopo aver acquisito una certa esperienza nello sviluppo web. Se per qualche motivo i tuoi sforzi di sviluppo richiedono l'uso di JavaScript, puoi procedere con NodeJS.
=> Controlla TUTTI i tutorial Flask qui
Lettura consigliata
- Python Django Tutorial - Introduzione a Django
- Modelli di progettazione di boccette e best practice per le applicazioni Web
- Modello di pallone, modulo, visualizzazione e reindirizzamento con esempi
- Le 31 domande più popolari dell'intervista a Python Flask con risposte
- Come configurare Node.js Testing Framework: Node.js Tutorial
- Tutorial TestNG: Introduzione a TestNG Framework
- Quadro basato su parole chiave in selenio con esempi
- Tutorial Robot Framework - Funzionalità e installazione software