django vs flask vs node
Flask og Django er Python-baserede webudviklingsrammer. Denne tutorial sammenligner Django vs Flask i detaljer. Flask vs Node dækkes også kort:
Det har altid været et gennemgribende dilemma, når det kommer til spørgsmålet om at vælge en ramme til dit næste projekt. Hvert par måneder ser du ny teknologi og en ramme, der overvinder svagheden ved den tidligere, du brugte.
En ramme er mere som en tavs kultur og et sæt konventioner, som du skal følge for at være mere relevant og produktiv i denne stadigt skiftende teknologiverden. Sammenlignet med at webudvikling bevæger sig meget hurtigere end desktopudvikling.
=> Læs igennem Flask Training Series
Hvad du lærer:
Django Vs Flask
I denne vejledning trækker vi en sammenligning i detaljer mellem Django og Flask. Flask og Django er Python-baserede webudviklingsrammer. Mange bevæger sig mod lette mikrorammer. Disse rammer er smidige, fleksible, små og hjælper med at udvikle mikrotjenester og serverløse applikationer.
I betragtning af NodeJS popularitet har vi også leveret en vidunderlig sammenligning mellem Flask og Node under afsnittet Flask vs. Node. Evaluering af Django og Flask på følgende funktioner hjælper dig med at vælge den ene frem for den anden.
Standardadministrator
Begge rammer giver en bootstrapped admin-applikation. I Django er det indbygget og leveres med standardinstallationen. I tilfælde af Flask skal du dog installere Flask-Appbuilder for at have en admin-grænseflade.
I mellemtiden skal du huske at oprette en superbruger i Django og admin i tilfælde af Flask, så du kan logge ind på admin-backend ved hjælp af browseren.
Databaser og ORMS
Django leveres med en standardindbygget ORM, som direkte understøtter interaktion med RDBMS som Oracle, MySQL, PostgreSQL, SQLite osv. Denne ORM understøtter også generering og styring af migrationer. Det er relativt mere behageligt at oprette databasemodeller med indbyggede valideringer.
Flask pålægger heller ikke en bestemt metode og er tilgængelig til brug sammen med forskellige udvidelser, der understøtter lignende funktioner som beskrevet i tilfældet med Django. Vi har givet eksempler på Flask-SQLAlchemy, Flask-Migrate, Flask-MongoEngine, i en af vejledningerne i serien.
Visninger og ruter
Begge rammer har mekanismer til at erklære metodebaserede og klassebaserede synspunkter. I tilfælde af Django nævnes ruter og visninger i separate filer. Vi er også altid nødt til at videregive anmodningsobjektet eksplicit.
På den anden side kan vi i Flask bruge en dekoratør til at nævne ruterne for de tilsvarende håndterere. Anmodningsobjektet i Flask er globalt og er kun tilgængeligt uden nogen eksplicit passering. Vi har detaljeret begreberne med at bruge visninger og ruter i en af vores tutorials.
Formularer og skabeloner
Django Forms er indbygget i rammen og kræver ingen installation. Formularer er ret vigtige for applikationer, og i Django kan formularerne videregives til skabelonkoder og kan gengives i skabeloner. I tilfælde af Flask er vi dog nødt til at bruge Flask-WTF.
Vi brugte også Flask-Appbuilder til at oprette formularer. Desuden kan WTF-Alembic bruges til at generere HTML-formularer baseret på databasemodeller.
Begge rammer understøtter Jinja2-skabeloner, og begge understøtter visning af statiske filer med indbyggede funktioner for at generere URL'erne til ressourcerne og er et ret almindeligt mønster i alle rammer i disse dage.
Selvom der er forskellige måder at overføre variablerne og at gengive skabelonerne i deres særlige visningsmetoder, har begge rammer den samme syntaks for at få adgang til variabler i skabeloner.
Fleksibilitet
Django er på grund af sin store størrelse og kompleksitet mindre fleksibel end Flask. Kolben kan let udvides ved hjælp af et stort antal udvidelser, som den understøtter. Derfor har det brug for mere tid og kræfter for at opsætte Flask, fordi vi skal evaluere flere udvidelser.
Den frihed, der gives udviklere på en måde, resulterer i langsommere udvikling og levering. På den anden side følger Django et sæt allerede etablerede konventioner og følger de arketyper, der kræver mindre afvigelse fra projektets mål og mål.
Indlæringskurve
Det kræver næsten samme tid at lære både Django og Flask. Flask har en mindre API; derfor kan folk muligvis afslutte det hurtigere for så vidt angår kernerammen. Det bliver lige så udfordrende, når det kommer til at bruge dets udvidelser. Det kan snart blive besværligt.
Men bare fordi alt ikke er pakket i en pakke, er det lettere at øve adskillelse af bekymringer i tilfælde af Flask-rammen.
Vi anbefaler, at du lærer mønstrene og ikke den syntaks, der følges. Både Django og Flask har fremragende dokumentation. Du kan nemt følge det, mens du udvikler en funktion.
Projektstørrelse og varighed
Når du arbejder på et større projekt med større teams, er det bedre at drage fordel af modenheden i Django og den omfattende support fra den bidragyder, den har. Hvis dit projekt er mindre og kræver et mindre antal udviklere, er det bedre at gå med Flask.
Desuden, hvis dit projekt vil vare længe, så er Django det rigtige valg; Ellers kan du vælge Kolbe.
Applikationstype
Tidligere blev Django anset for at være det rigtige valg, når der var krav om fuldgyldige webapplikationer på virksomhedsskala. Men i dag er kolben lige moden og kan tjene godt under de samme forhold.
Imidlertid har udviklere en tendens til at vælge Flask mere til udvikling af små eller statiske websteder, eller mens de implementerer hurtig til at levere RESTful API-webtjenester.
Rekruttering af udviklere
At have dygtige ressourcer i konventionen om de rammer, du bruger, betaler sig. Du kan forvente hurtigere udvikling, hurtigere test, hurtigere levering og hurtigere problemrettelser.
Det er ret let at finde nye udviklere i tilfælde af Flask. Det er dog udfordrende at finde dygtige ressourcer i Django. Der er ikke mange, der er klar til at blive ansat af Django-udviklere. Desuden er Django-rammen ret gammel, og derfor er de fleste af de nye ansættelser dyre at ansætte sammenlignet med dem, der er dygtige i Flask-rammen.
Nye tekniske kandidater opfanger også lette rammer som f.eks. Flask, fordi branchens tendenser er i retning af at skabe applikationer med afkoblede mikrotjenester eller teknologien, der understøtter oprettelsen af den serverløse implementering. Javascript bruges i vid udstrækning sammen med de rammer, der er lettere at bruge og er mere populære.
Åben kilde
Både Flask og Django er open source-projekter. Du kan finde Django på https://github.com/django/django og Flask på https://github.com/pallets/flask. Ser man på disse projekter, er antallet af bidragydere til Django meget mere omfattende end dem, der bidrager til Flask.
Derfor kan vi forvente mere og hurtigere support, hvis vi har nogle problemer og forespørgsler, der skal løses. I modsætning til typiske antagelser er antallet af brugere af Flask-projektet højere end Django.
En om faktum om Flask er, at der muligvis ikke er en stabil udvidelse til en bestemt opgave. Derfor forbliver arbejdet med at filtrere det bedste ud hos brugeren af udvidelsen.
For eksempel, vi brugte Flask-Twitter-oembedder til at arbejde med Twitters API i den sidste selvstudie, men denne udvidelse havde nogle problemer, som vi måtte skifte fra Flask-Cache til Flask-Caching.
Vi måtte endda medtage en brugerdefineret installationserklæring for at installere Flask-twitter-oembedder fra vores opdaterede Github repo i stedet for at nævne det i vores requrements.txt-fil af projektet.
Hyppig vedligeholdelse er en typisk udfordring, som du møder med et open source-projekt. Support og styring af open source-projektet er normalt knyttet til betalte tjenester. Du bliver muligvis nødt til at vente længe på at få nogle få problemer rettet fra bidragsydere til projektet.
Ydeevne
Kolberamme er lettere end Django og fungerer bedre med ubetydelige forskelle, især når man overvejer I / O-operationer.
Se på nedenstående sammenligninger. Med stigningen i anmodninger forbliver Flaskens ydeevne næsten den samme. Imidlertid tager Django mere tid til at gengive skabeloner efter hentning af data ved hjælp af ORM.
Python Flask Vs Django: A Tabular Comparison
# | Funktioner | Django | Kolbe |
---|---|---|---|
7 | Variabel interpolering i skabeloner | I skabeloner / demo.html {{tempvar}} | I skabeloner / demo.html {{tempvar}} |
1 | Standardadministrator | Indbygget administrator-backend | Installer Flask-Appbuilder |
to | Aktivér standardadministrator | I settings.py skal du sørge for at fjerne kommentar fra den admininstallerede app. ... # Applikationsdefinition INSTALLED_APPS = ( 'internet side', 'django.contrib.admin', # anden kode ) ... | Importer AppBuilder og SQLA fra flask_appbuilder, initialiser DB først og derefter Appbuilder fra kolbeimport Kolbe fra flask_appbuilder importerer AppBuilder, SQLA app = kolbe (__ navn__) db = SQLA (app) appbuilder = AppBuilder (app, db.session) |
3 | Opret administratorbruger | python manage.py skaber brugerbruger | kolbe fab create-admin |
4 | Databaser og ORMS | Indbygget ORM til RDBMS Brug Django-nonrel til NoSQL-backends | Installer Flask-SQLAlchemy En NoSQL-specifik flaskeudvidelse såsom Flask-MongoEngine |
5 | Visninger og ruter | URLConf i urls.py fra django.urls importsti fra .import visninger urlpatterns = ( sti ('/ sti', views.handler_method), # andre webadresser og handlere ) | Brug @ app.route (“/ sti”) dekoratør på Views til at kortlægge en rute med en funktion. @ app.route (“/ sti”) def handler_metode (): # anden kode med yderligere logik |
6 | Render skabeloner | I synspunkter fra django.shortcuts import render def eksempel_visning (anmodning): tempvar = ”værdi_for_skabelon” returner gengivelse ( anmodning, 'Demo.html', {'Tempvar': tempvar} ) | I synspunkter fra . import app fra anmodning om import af kolbe fra kolbeimport render_template @ app.route (“/ sti”) def demo (): tempvar = ”værdi_for_skabelon” returner render_template ( “Demo.html”, temp_var = temp_var ) |
8 | Fleksibilitet | Mindre fleksibel | Mere fleksibel |
9 | Designbeslutninger | Mindre designbeslutninger med udviklere. | Mere frihed for udviklere. |
10 | Projektafvigelse | Mindre afvigelse fra projektmål. | Mere afvigelse på grund af frihed til udviklere. |
elleve | Størrelse på kodebase | Større kodebase | Mindre kodebase |
12 | Antal API'er | Flere API'er | Mindre API'er |
13 | Applikationstype | Komplette webapplikationer | Mindre applikationer / mikrotjenester |
14 | RESTful applikationer | Django REST ramme til RESTful applikationer. | Brug følgende udvidelser til RESTful applikationer. Kolbe-RESTful Kolbe-RESTX Log på |
femten | Ydeevne | Langsom præstation, når antallet af anmodninger er stort. | Konsistent præstation overalt. |
16 | Open Source bidrag | Flere antal gafler, ure og forpligtelser. | Mindre antal gafler, ure og forpligtelser. |
17 | Udviklere | Kræver erfarne udviklere og er ikke let tilgængelige til rekruttering. | De fleste af udviklerne er mindre erfarne og findes i et tilstrækkeligt antal. |
Kolbe mod knude
Med hensyn til webudviklingsstakken viser det sig, at udvikling til internettet kræver en sammenlægning af forskellige teknologier. Vi er nødt til at nedbryde en webapplikation i en frontend og backend. Den forreste del af applikationen er bedst udviklet i de teknologier, der kører i browseren, såsom JavaScript, HTML og CSS.
Generelt er backend udviklet på sprog, der er egnede til serversiden og kan interagere med det underliggende operativsystem, tilsluttede databaser eller netværket, når det er nødvendigt.
Imidlertid ændrede en JavaScript-baseret ramme kaldet NodeJS ovenstående visning og gjorde det muligt for udviklere at have konsistens og ensartethed på tværs af front- og back-end-udvikling til webapplikationer. Udviklere kan udvikle sig til backend ved hjælp af JavaScript.
I denne sektion Flask vs Node sammenligner vi Flask, som er en Python-programmeringssprogbaseret ramme, med Node, der er baseret på Chromes JavaScript-runtime på forskellige kriterier såsom arkitektur, hastighed, community support osv.
# | Kriterier | Kolbe | Node |
---|---|---|---|
7 | Fejlfinding | Lettere at debugge med Python debugger uden afhængigheder. | Kræver mere indsats. Lettere med en udviklings-IDE med Bluebird / Promise Library. |
1 | Sprogkørselstid | Python | Chrome's V8 JavaScript-motor |
to | Arkitektur | Ikke-blokerende I / O kræver brug af ikke-blokerende webservere som gunicorn. Microframework (back end) kategori. | Inherent Giver ikke-blokerende I / O. Fullstack-kategori |
3 | Pakkehåndtering | pip | over havniveau |
4 | Hastighed | Langsommere på grund af en separat Python-tolk. | Hurtigere på grund af Just-In-Time compiler. |
5 | Åben kilde | Ja | Ja |
6 | Community Support | På Github 2.3 K ure 51,4 K stjerner 13,7 K gafler | På Github 2,9 K ure 71,9 K stjerner 17,6 K gafler |
8 | Vedligeholdelse | Lav vedligeholdelse | Højere vedligeholdelse |
9 | Realtidsapplikationer | Iboende ikke egnet. Det kan dog fungere sammen med socket.io til brug i realtid. Brug udvidelsen Flask-socketio. | Egnet på grund af hændelsesdrevet arkitektur og streaming-moduler. Inherent asynkront. |
10 | Biblioteker | Mere moden og stabil. | Mindre moden og stabil, men inden for aktiv udvikling og fix release. |
elleve | Kodekvalitet | Det er udelukkende skabt til bagenden. | Det er undertiden kompromitteret på grund af nye frontend-udviklere, der skifter til backend. |
12 | Udviklerholdssammensætning | Hold består normalt af Back-end-udviklere og front-end-udviklere. Bekymringer er adskilte. | Udviklere kan udveksle roller og arbejde for både front- og back-end. |
13 | Integration med eksisterende system og applikationer | Lettere at integrere med andre eksisterende ældre backend-applikationer ved hjælp af Python 'økosystem til maskinindlæring og Big Data-applikationer. | Ret nyt og kræver oprettelse af brugerdefinerede eller nye biblioteker til integration med andre eksisterende applikationer. |
Ofte stillede spørgsmål
Q # 1) Hvad skal jeg først lære, Django eller Flask?
Svar: Det er bedre at gå med Flask først. Når du først har fået lidt erfaring med webudvikling, kan du starte Django. Django antager, at du allerede ved, hvordan webapplikationer fungerer, og det tager sig af det meste af funktionaliteten i sig selv.
Q # 2) Er Flask eller Django bedre?
Svar: Både Flask og Django er fremragende og passer til deres formål. Django bruges til at skabe mere fremtrædende applikationer i virksomhedsskala. Kolbe bruges til at oprette statiske og mindre applikationer. Kolbe er også velegnet til prototyper. Men med brugen af kolbeudvidelser kan vi også oprette store applikationer.
Spørgsmål nr. 3) Hvilke virksomheder bruger Flask?
vr headset til xbox one s
Svar: Nogle af de virksomheder, der bruger Flask, er Reddit, Mailgun, Netflix, Airbnb osv.
Spørgsmål nr. 4) Hvilke websteder bruger Django?
Svar: Nogle af de sider, der bruger Django, er Instagram, Spotify, YouTube, Dropbox, Bitbucket, Eventbrite osv.
Konklusion
Vi skal ikke rigtig blive fikseret med en ramme længe. Vi bør være klar til at lære nye sæt teknologier og vedtage de trendende stakke derude. Nogle af os ønsker forholdsvis ud af kassen, batteri inkluderede tilgange med stive frigivelsescyklusser, opretholdelse af strammere bagudkompatibilitet osv
Hvis du tror, du hører mere til denne gruppe, skal du vælge Django. Det er dog utroligt at gå sammen med nye funktioner og fleksibilitet i Flask-rammen også. Når du vil bevare sammenhængen mellem frontend og backend, kan du vælge en full-stack ramme som NodeJS.
At gå med en ramme er mere et valg, der afhænger af den sammenhæng og de problemer, vi prøver at løse. Det er altid svært at vælge en ramme. Vi håber, at vi har præsenteret de vigtige gennemgangspunkter i denne vejledning, og det vil hjælpe dig med at færdiggøre en ramme. Vi anbefaler dog at lære begge rammer.
Det er lettere at starte med Flask og derefter gå videre til Django efter at have fået nogle erfaringer med webudvikling. Hvis din udviklingsindsats af en eller anden grund kræver brug af JavaScript, kan du gå videre med NodeJS.
=> Tjek ALLE kolbevejledninger her
Anbefalet læsning
- Python Django-vejledning - Kom godt i gang med Django
- Flaskedesignmønstre og bedste fremgangsmåder til webapplikationer
- Flaskeskabelon, form, visning og omdirigering med eksempler
- Top 31 populære Python Flask Interview-spørgsmål med svar
- Sådan konfigureres Node.js Testing Framework: Node.js Tutorial
- TestNG Tutorial: Introduktion til TestNG Framework
- Søgeordsdrevet ramme i selen med eksempler
- Robot Framework Tutorial - Funktioner og softwareinstallation