django vs flask vs node
Flask și Django sunt cadre de dezvoltare web bazate pe Python. Acest tutorial compară în detaliu Django vs Flask. Flask vs Node este, de asemenea, tratat pe scurt:
A fost întotdeauna o dilemă răspândită atunci când vine vorba de selectarea unui cadru pentru următorul dvs. proiect. La fiecare câteva luni, vedeți o nouă tehnologie și un cadru care depășește slăbiciunea celei anterioare pe care ați folosit-o.
Un cadru seamănă mai mult cu o cultură tăcută și cu un set de convenții pe care trebuie să le urmați pentru a fi mai relevant și mai productiv în această lume în continuă schimbare a tehnologiei. Comparativ, dezvoltarea web se mișcă mult mai repede decât dezvoltarea desktop.
=> Citiți seria de formare a balonului
Ce veți învăța:
Django Vs Flask
În acest tutorial, tragem o comparație între Django și Flask în detaliu. Flask și Django sunt cadre de dezvoltare web bazate pe Python. Mulți se îndreaptă către microframe ușoare. Aceste cadre sunt agile, flexibile, mici și ajută la dezvoltarea de microservicii și aplicații fără server.
Având în vedere popularitatea NodeJS, am oferit, de asemenea, o comparație prodigioasă între Flask și Node în secțiunea Flask vs. Node. Evaluarea Django și Flask pe următoarele caracteristici vă va ajuta să selectați una peste alta.
Administrator implicit
Ambele cadre oferă o aplicație de administrare bootstrappată. În Django, este încorporat și vine cu instalarea implicită. Cu toate acestea, în cazul Flask, trebuie să instalați Flask-Appbuilder pentru a avea o interfață de administrare.
Între timp, nu uitați să creați un superutilizator în Django și admin în cazul Flask, astfel încât să vă puteți conecta la backend-ul de administrare utilizând browserul.
Baze de date și ORMS
Django este livrat cu un ORM încorporat implicit, care acceptă în mod direct interacțiunea cu RDBMS, cum ar fi Oracle, MySQL, PostgreSQL, SQLite, etc. Acest ORM acceptă, de asemenea, generarea și gestionarea migrațiilor. Este relativ mai confortabil să creați modele de baze de date cu validări încorporate.
Flask, de asemenea, nu impune nicio metodă anume și este disponibil pentru a fi utilizat cu diferite extensii care acceptă caracteristici similare, așa cum este subliniat în cazul Django. Am dat exemple de Flask-SQLAlchemy, Flask-Migrate, Flask-MongoEngine, într-unul dintre tutorialele seriei.
Vizualizări și trasee
Ambele cadre au mecanisme pentru a declara puncte de vedere bazate pe metode și pe clase. În cazul Django, traseele și vizualizările sunt menționate în fișiere separate. De asemenea, trebuie întotdeauna să transmitem obiectul cererii în mod explicit.
Pe de altă parte, în Flask, putem folosi un decorator pentru a menționa traseele pentru manipulatorii corespunzători. Obiectul de cerere din Flask este global și este disponibil doar fără a fi trecut în mod explicit. Am detaliat conceptele de utilizare a vizualizărilor și rutelor într-unul dintre tutorialele noastre.
Formulare și șabloane
Formularele Django sunt încorporate în cadru și nu necesită instalare. Formularele sunt destul de esențiale pentru aplicații, iar în Django, formularele pot fi transmise etichetelor șablonului și sunt disponibile pentru a fi redate în șabloane. Cu toate acestea, în cazul Flask, trebuie să folosim Flask-WTF.
De asemenea, am folosit Flask-Appbuilder pentru a crea formulare. Mai mult, WTF-Alembic poate fi folosit pentru a genera formulare HTML bazate pe modele de baze de date.
Ambele cadre acceptă șablonarea Jinja2 și ambele acceptă difuzarea fișierelor statice cu funcții încorporate pentru a genera adresele URL ale resurselor și este un model destul de comun în toate cadrele din zilele noastre.
Deși există diferite moduri de a transmite variabilele și de a reda șabloanele în metodele lor de vizualizare particulare, ambele cadre au aceeași sintaxă de accesare a variabilelor în șabloane.
Flexibilitate
Django, datorită dimensiunii și complexității sale, este mai puțin flexibil decât Flask. Balonul poate fi extins cu ușurință cu ajutorul unui număr mare de extensii pe care le acceptă. Prin urmare, are nevoie de mai mult timp și efort pentru a configura Flask, deoarece trebuie să evaluăm mai multe extensii.
Libertatea acordată dezvoltatorilor într-un fel duce la o dezvoltare și livrare mai lentă. Pe de altă parte, Django urmează un set de convenții deja stabilite și urmărește arhetipurile care necesită mai puțină abatere de la obiectivele și obiectivele proiectului.
Curbă de învățare
Aproape că necesită aceeași cantitate de timp pentru a învăța atât Django, cât și Flask. Flask are un API mai mic; prin urmare, oamenii ar putea fi capabili să o termine mai repede în ceea ce privește cadrul de bază. Devine la fel de provocator atunci când vine vorba de utilizarea extensiilor sale. Ar putea deveni greoi în curând.
Cu toate acestea, doar pentru că totul nu este ambalat într-un singur pachet, este mai ușor să practicați separarea preocupărilor în cazul cadrului Flask.
Vă recomandăm să învățați tiparele și nu sintaxa care este urmată. Atât Django cât și Flask au o documentație excelentă. O puteți urmări cu ușurință în timp ce dezvoltați o caracteristică.
Dimensiunea și durata proiectului
Când lucrați la un proiect mai mare cu echipe mai mari, este mai bine să profitați de maturitatea Django și de sprijinul extins al contribuitorilor pe care îl are. Dacă proiectul dvs. este mai mic și necesită un număr mai mic de dezvoltatori, este mai bine să mergeți cu Flask.
Mai mult, dacă proiectul tău va dura mult, atunci Django este alegerea corectă; în caz contrar, puteți selecta Flask.
Tipul aplicației
Anterior, Django era considerat a fi alegerea corectă atunci când exista o cerință pentru aplicații web la scară deplină la nivel de întreprindere. Dar, astăzi, Balonul este la fel de matur și poate servi bine pentru aceleași condiții.
Cu toate acestea, dezvoltatorii au tendința de a alege Flask mai mult pentru dezvoltarea de site-uri web mici sau statice sau, în timp ce implementează rapid servicii Web RESTful API.
Recrutare pentru dezvoltatori
A avea resurse calificate în convenția cadrului pe care îl utilizați se plătește. Vă puteți aștepta la o dezvoltare mai rapidă, testare mai rapidă, livrare mai rapidă și remedieri mai rapide ale problemelor.
Este destul de ușor să găsiți noi dezvoltatori în cazul Flask. Cu toate acestea, este dificil să găsești resurse calificate în Django. Nu sunt multe gata să fie angajate de dezvoltatorii Django. Mai mult, cadrul Django este destul de vechi și, prin urmare, majoritatea angajărilor noi sunt costisitoare de angajat în comparație cu cei care sunt calificați în cadrul Flask.
Noii absolvenți tehnici preiau, de asemenea, cadre ușoare, cum ar fi Flask, deoarece tendințele industriei sunt către crearea de aplicații cu microservicii decuplate sau tehnologia care sprijină crearea implementării fără server. Javascript este utilizat pe scară largă împreună cu cadrele care sunt mai ușor de utilizat și sunt mai populare.
Sursa deschisa
Atât Flask, cât și Django sunt proiecte open-source. Puteți găsi Django la https://github.com/django/django și Flask la https://github.com/pallets/flask. Privind aceste proiecte, numărul contribuitorilor la Django este destul de extins decât cei care contribuie la Flask.
Prin urmare, ne putem aștepta la un sprijin mai mare și mai rapid dacă avem unele probleme și întrebări care necesită rezolvare. Contrar ipotezelor tipice, numărul de utilizatori ai proiectului Flask este mai mare decât cel al Django.
Un fapt care se referă la Flask este că s-ar putea să nu existe o extensie stabilă pentru o anumită sarcină. Prin urmare, munca de filtrare a celui mai bun rămâne în sarcina utilizatorului extensiei.
De exemplu, am folosit Flask-Twitter-oembedder pentru a lucra cu API-ul Twitter în ultimul tutorial, dar această extensie a avut unele probleme din cauza cărora a trebuit să trecem de la Flask-Cache la Flask-Caching.
A trebuit chiar să includem o declarație de instalare personalizată pentru a instala Flask-twitter-oembedder din repozitia noastră actualizată Github, mai degrabă decât să o menționăm în fișierul nostru requrements.txt al proiectului.
Întreținerea frecventă este o provocare tipică pe care o veți confrunta cu un proiect open-source. Sprijinul și gestionarea proiectului open-source sunt de obicei legate de serviciile plătite. S-ar putea să trebuiască să așteptați mult timp pentru a rezolva câteva probleme de la contribuitorii la proiect.
Performanţă
Cadrul Flask este mai ușor decât Django și are performanțe mai bune cu diferențe neglijabile, mai ales luând în considerare operațiile I / O.
Aruncați o privire la comparațiile date mai jos. Odată cu creșterea cererilor, performanța Flask rămâne aproape aceeași. Cu toate acestea, Django necesită mai mult timp pentru a reda șabloanele după preluarea datelor folosind ORM.
Python Flask Vs Django: o comparație tabelară
# | Caracteristici | Django | Balon |
---|---|---|---|
7 | Interpolare variabilă în șabloane | În șabloane / demo.html {{tempvar}} | În șabloane / demo.html {{tempvar}} |
1 | Administrator implicit | Backend de administrare încorporat | Instalați Flask-Appbuilder |
Două | Activați administratorul implicit | În settings.py, asigurați-vă că decomentați aplicația instalată de administrator. ... # Definiția aplicației INSTALLED_APPS = ( „site web”, „django.contrib.admin”, # alt cod ) ... | Importați AppBuilder și SQLA din flask_appbuilder, inițializați mai întâi baza de date și apoi Appbuilder din flacon import Flacon din flask_appbuilder import AppBuilder, SQLA app = Flask (__ nume__) db = SQLA (app) appbuilder = AppBuilder (app, db.session) |
3 | Creați utilizator de administrator | python manage.py creează superutilizator | flask fab create-admin |
4 | Baze de date și ORMS | ORM încorporat pentru RDBMS Utilizați Django-nonrel pentru backend-urile NoSQL | Instalați Flask-SQLAlchemy Un Flask-Extension specific NoSQL, cum ar fi Flask-MongoEngine |
5 | Vizualizări și rute | URLConf în urls.py din calea de import django.urls din .vizualizări de import urlpatterns = ( cale („/ cale”, views.handler_method), # alte adrese URL și manipulatoare ) | Utilizați decoratorul @ app.route („/ cale”) pe Views pentru a mapa un traseu cu o funcție. @ app.route („/ cale”) def handler_method (): # alt cod cu logică suplimentară |
6 | Redare șabloane | În vizualizări din django.shortcuts import render def example_view (request): tempvar = ”value_for_template” returnează redarea ( cerere, „Demo.html”, {'Tempvar': tempvar} ) | În vizualizări din. aplicația de import din cererea de import a balonului din importul balonului render_template @ app.route („/ cale”) demo def (): tempvar = ”value_for_template” returnează model_rendare ( „Demo.html”, temp_var = temp_var ) |
8 | Flexibilitate | Mai puțin flexibil | Mai flexibil |
9 | Decizii de proiectare | Mai puține decizii de proiectare cu dezvoltatorii. | Mai multă libertate pentru dezvoltatori. |
10 | Abaterea proiectului | Mai puțină abatere de la obiectivele proiectului. | Mai multă abatere datorată libertății acordate dezvoltatorilor. |
unsprezece | Dimensiunea Codebase | Codebase mai mare | Codebase mai mic |
12 | Nr de API-uri | Mai multe API-uri | Mai puține API-uri |
13 | Tipul aplicației | Aplicații web complete | Aplicații mai mici / Microservicii |
14 | Aplicații RESTful | Cadrul Django REST pentru aplicații RESTful. | Utilizați următoarele extensii pentru aplicații RESTful. Flask-RESTful Flask-RESTX Logare |
cincisprezece | Performanţă | Performanță lentă atunci când numărul de solicitări este mare. | Performanță constantă pe tot parcursul. |
16 | Contribuții Open Source | Mai multe numere de furci, ceasuri și angajamente. | Număr mai mic de furci, ceasuri și angajamente. |
17 | Dezvoltatori | Necesită dezvoltatori experimentați și nu sunt ușor disponibile pentru recrutare. | Majoritatea dezvoltatorilor sunt mai puțin experimentați și se găsesc în număr adecvat. |
Flask Vs Node
În ceea ce privește stiva de dezvoltare web, se dovedește că dezvoltarea pentru web necesită o fuziune a diferitelor tehnologii. Trebuie să descompunem o aplicație web în frontend și backend. Partea front-end a aplicației este dezvoltată cel mai bine în tehnologiile care rulează în browser, cum ar fi JavaScript, HTML și CSS.
În general, backend-ul este dezvoltat în limbi potrivite pentru partea serverului și care pot interacționa cu sistemul de operare subiacent, cu bazele de date conectate sau cu rețeaua atunci când este necesar.
Cu toate acestea, un cadru bazat pe JavaScript numit NodeJS a schimbat vizualizarea dată mai sus și a permis dezvoltatorilor să aibă consistență și uniformitate în dezvoltarea front end și back end pentru aplicații web. Dezvoltatorii ar putea dezvolta pentru back-end folosind JavaScript.
În această secțiune Flask vs Node, comparăm Flask, care este un cadru bazat pe limbaj de programare Python, cu Node, care se bazează pe runtime-ul JavaScript al Chrome pe diverse criterii, cum ar fi arhitectura, viteza, suportul comunității etc.
# | Criterii | Balon | Nodul |
---|---|---|---|
7 | Depanare | Mai ușor de depanat cu depanatorul Python fără dependențe. | Necesită mai mult efort. Mai ușor cu un IDE de dezvoltare cu Bluebird / Promise Library. |
1 | Runtime de limbă | Piton | Motorul JavaScript V8 al Chrome |
Două | Arhitectură | I / O care nu blochează necesită utilizarea unor servere web care nu blochează, cum ar fi gunicorn. Categoria Microframework (back end). | Oferă în mod inerent I / O care nu blochează. Categorie Fullstack |
3 | Manager pachet | pip | deasupra nivelului mării |
4 | Viteză | Mai lent din cauza unui interpret Python separat. | Mai rapid datorită compilatorului Just-In-Time. |
5 | Sursa deschisa | da | da |
6 | Asistență comunitară | Pe Github 2.3 K Ceasuri 51,4 K Stele 13.7 K Furci | Pe Github 2.9 K Ceasuri 71,9 K Stele 17,6 K Furci |
8 | întreținere | Întreținere redusă | Întreținere superioară |
9 | Aplicații în timp real | Inerent nu este potrivit. Cu toate acestea, poate funcționa împreună cu socket.io pentru cazuri de utilizare în timp real. Utilizați extensia Flask-socketio. | Potrivit datorită arhitecturii bazate pe evenimente și modulelor de streaming. Inerent asincron. |
10 | Biblioteci | Mai matur și mai stabil. | Mai puțin matur și stabil, dar în curs de dezvoltare activă și versiuni corecte. |
unsprezece | Calitatea codului | Este creat exclusiv pentru back-end. | Uneori este compromis din cauza noilor dezvoltatori front-end care trec la backend. |
12 | Compoziția echipei de dezvoltatori | Echipele sunt de obicei compuse din dezvoltatori de back-end și dezvoltatori de front-end. Preocupările sunt separate. | Dezvoltatorii pot schimba roluri și lucra atât pentru front end cât și pentru back end. |
13 | Integrare cu sistemul și aplicațiile existente | Mai ușor de integrat cu alte aplicații vechi existente, folosind ecosistemul Python pentru Machine Learning și aplicații Big Data. | Destul de nou și necesită crearea de biblioteci personalizate sau noi pentru integrarea cu alte aplicații existente. |
întrebări frecvente
Q # 1) Ce ar trebui să învăț mai întâi, Django sau Flask?
Răspuns: Este mai bine să mergeți mai întâi cu Flask. Odată ce câștigi puțină experiență în dezvoltarea web, poți lua Django. Django presupune că știți deja cum funcționează aplicațiile web și se ocupă de cea mai mare parte a funcționalității de la sine.
Q # 2) Flask sau Django sunt mai bune?
Răspuns: Atât Flask, cât și Django sunt excelente și se potrivesc scopului lor. Django este utilizat pentru a crea aplicații mai proeminente la nivel de întreprindere. Balonul este folosit pentru a crea aplicații statice și mai mici. Balonul este potrivit și pentru prototipare. Cu toate acestea, cu ajutorul extensiilor Flask, putem crea și aplicații mari.
Î # 3) Ce companii folosesc Flask?
cum arată un fișier json
Răspuns: Unele dintre companiile care utilizează Flask sunt Reddit, Mailgun, Netflix, Airbnb etc.
Q # 4) Ce site-uri folosesc Django?
Răspuns: Unele dintre site-urile care utilizează Django sunt Instagram, Spotify, YouTube, Dropbox, Bitbucket, Eventbrite etc.
Concluzie
Nu ar trebui să ne fixăm într-adevăr cu un singur cadru pentru mult timp. Ar trebui să fim pregătiți să învățăm noi seturi de tehnologie și să adoptăm pachetele de tendințe. Unii dintre noi dorim comparativ ieșirea din cutie, abordări incluse pe baterie cu cicluri rigide de eliberare, menținând o compatibilitate mai strânsă înapoi, etc.
Dacă credeți că aparțineți mai mult acestui grup, atunci trebuie să alegeți Django. Cu toate acestea, este incredibil să mergeți împreună cu noile caracteristici și flexibilitatea cadrului Flask. Când doriți să păstrați coerența dintre front end și backend, puteți alege un cadru full-stack, cum ar fi NodeJS.
A merge cu un cadru este mai mult o alegere care depinde de contextul și problemele pe care încercăm să le rezolvăm. Selectarea unui cadru este întotdeauna dificilă. Sperăm că am prezentat punctele esențiale de revizuire în acest tutorial și vă vor ajuta să finalizați un cadru. Cu toate acestea, vă recomandăm să învățați ambele cadre.
Este mai ușor să începeți cu Flask și apoi să treceți la Django după ce ați câștigat ceva experiență în dezvoltarea web. Dacă din anumite motive eforturile dvs. de dezvoltare necesită utilizarea JavaScript, puteți continua cu NodeJS.
=> Verificați TOATE Tutorialele Flask aici
Lectură recomandată
- Tutorial Python Django - Noțiuni introductive despre Django
- Modele de proiectare a balonului și cele mai bune practici pentru aplicațiile web
- Șablon de balon, formular, vizualizare și redirecționare cu exemple
- Top 31 Întrebări populare de interviu Python Flask cu răspunsuri
- Cum se configurează cadrul de testare Node.js: Tutorial Node.js
- Tutorial TestNG: Introducere în TestNG Framework
- Cadru bazat pe cuvinte cheie în seleniu cu exemple
- Tutorial Robot Framework - Caracteristici și instalare software