django vs flask vs node
Flask in Django sta ogrodja spletnega razvoja, ki temelji na Pythonu. Ta vadnica podrobno primerja Django in Flask. Flask vs Node je na kratko tudi zajet:
Pri vprašanju izbire okvira za vaš naslednji projekt je bila vedno razširjena dilema. Vsakih nekaj mesecev vidite novo tehnologijo in ogrodje, ki premaga šibkost prejšnje, ki ste jo uporabljali.
Okvir je bolj podoben tihi kulturi in nizu konvencij, ki jih morate upoštevati, da boste bolj ustrezni in produktivni v tem vedno spreminjajočem se svetu tehnologije. Primerjalno je, da se spletni razvoj premika veliko hitreje kot razvoj namizja.
=> Preberite serijo usposabljanja za bučke
Kaj se boste naučili:
Django Vs Flask
V tej vadnici podrobno povzamemo primerjavo med Django in Flaskom. Flask in Django sta ogrodja spletnega razvoja, ki temelji na Pythonu. Mnogi se premikajo k lahkim mikrookvirjem. Ti okviri so okretni, prilagodljivi, majhni in pomagajo pri razvoju mikroservisov in aplikacij brez strežnikov.
Glede na priljubljenost NodeJS smo v razdelku Flask vs. Node podali tudi čudno primerjavo med Flask in Node. Ocenjevanje Django in Flask glede naslednjih funkcij vam bo pomagalo pri izbiri enega nad drugim.
Privzeti skrbnik
Oba okvira zagotavljata zagonsko skrbniško aplikacijo. V Django je vgrajen in ima privzeto namestitev. V primeru Flask pa morate namestiti Flask-Appbuilder, da imate skrbniški vmesnik.
Medtem ne pozabite ustvariti superuporabnika v Django in admin v primeru Flask, tako da se boste lahko v brskalnik prijavili v skrbniško skrbniško mrežo.
Zbirke podatkov in ORMS
Django je dobavljen s privzeto vgrajenim ORM, ki naravnost podpira interakcijo z RDBMS, kot so Oracle, MySQL, PostgreSQL, SQLite itd. Ta ORM podpira tudi ustvarjanje in upravljanje migracij. Razmeroma udobneje je ustvariti modele baz podatkov z vgrajenimi validacijami.
Flask prav tako ne nalaga nobene posebne metode in je na voljo za uporabo z različnimi razširitvami, ki podpirajo podobne funkcije, kot so opisane v primeru Django. V enem od vaj te serije smo podali primere Flask-SQLAlchemy, Flask-Migrate, Flask-MongoEngine.
Pogledi in poti
Oba okvira imata mehanizme za razglasitev pogledov na podlagi metod in razredov. V primeru Djanga so poti in pogledi omenjeni v ločenih datotekah. Prav tako moramo vedno izrecno predati objekt zahteve.
Po drugi strani pa lahko v Flasku z dekoraterjem omenimo poti za ustrezne vodnike. Objekt zahteve v Flasku je splošen in je na voljo samo brez izrecnega posredovanja. V enem od naših vadnic smo podrobno opisali koncepte uporabe pogledov in poti.
Obrazci in predloge
Obrazci Django so vgrajeni v ogrodje in ne zahtevajo namestitve. Obrazci so zelo pomembni za aplikacije, v Django pa jih lahko posredujete oznakam predloge in so na voljo za upodabljanje v predlogah. V primeru bučke pa moramo uporabiti Flask-WTF.
Za ustvarjanje obrazcev smo uporabili tudi Flask-Appbuilder. Poleg tega se WTF-Alembic lahko uporablja za ustvarjanje obrazcev HTML na podlagi modelov baz podatkov.
Oba ogrodja podpirata predloge Jinja2 in oba podpirata strežbo statičnih datotek z vgrajenimi funkcijami za generiranje URL-jev virov in je danes precej pogost vzorec v vseh okoljih.
Čeprav obstajajo različni načini za posredovanje spremenljivk in upodabljanje predlog v njihovih posebnih metodah pogleda, imata oba okvira enako sintakso dostopa do spremenljivk v predlogah.
Prilagodljivost
Django je zaradi svoje velikosti in zapletenosti manj prilagodljiv kot Flask. Bučko lahko enostavno podaljšate s pomočjo številnih razširitev, ki jih podpira. Zato potrebujemo več časa in truda za nastavitev Flaska, ker moramo oceniti več razširitev.
Svoboda, ki je dana razvijalcem, ima za posledico počasnejši razvoj in dostavo. Po drugi strani pa Django sledi naboru že uveljavljenih konvencij in sledi arhetipom, ki zahtevajo manjše odstopanje od projektnih ciljev.
Krivulja učenja
Za učenje Djanga in Flaska potrebuje skoraj toliko časa. Flask ima manjši API; zato bi ga ljudje morda lahko končali hitreje, kar zadeva osnovni okvir. Enako zahteven postane tudi pri uporabi njegovih razširitev. Morda bo kmalu postalo okorno.
Ker pa vse ni zapakirano v enem paketu, je v primeru Flask lažje vaditi ločevanje pomislekov.
Priporočamo, da se naučite vzorcev in ne skladnje, ki ji sledite. Tako Django kot Flask imata odlično dokumentacijo. Med razvojem funkcije mu lahko preprosto sledite.
Velikost in trajanje projekta
Ko delate na večjem projektu z večjimi skupinami, je bolje, da izkoristite zrelost Djanga in njegovo veliko podporo sodelavcem. Če je vaš projekt manjši in zahteva manjše število razvijalcev, je bolje, da uporabite Flask.
Poleg tega, če bo vaš projekt trajal dolgo, je prava izbira Django; v nasprotnem primeru lahko izberete Bučko.
Vrsta aplikacije
Prej je bil Django prava izbira, ko so se zahtevale polnopravne spletne aplikacije v podjetju. Toda danes je Flask enako zrel in lahko dobro služi v enakih pogojih.
Vendar pa razvijalci običajno izberejo Flask bolj za razvoj majhnih ali statičnih spletnih mest ali pri hitrem izvajanju spletnih storitev RESTful API.
Zaposlitev razvijalcev
Imeti kvalificirane vire v skladu z okvirom, ki ga uporabljate, se splača. Pričakujete lahko hitrejši razvoj, hitrejše preskušanje, hitrejšo dostavo in hitrejše popravke težav.
V primeru Flaska je povsem enostavno najti nove razvijalce. Vendar je v Djangu težko najti kvalificirane vire. Razvijalcev Django ni veliko pripravljenih najeti. Poleg tega je ogrodje Django precej staro, zato je večino novih najemov drago najeti v primerjavi s tistimi, ki so vešči okvira Flask.
Novi diplomirani tehnični strokovnjaki se lotevajo tudi lahkih okvirov, kot je Flask, ker so industrijski trendi usmerjeni k ustvarjanju aplikacij z ločenimi mikrostoritvami ali tehnologijo, ki podpira ustvarjanje brezstrežniške izvedbe. Javascript se pogosto uporablja skupaj z okviri, ki so enostavnejši za uporabo in so bolj priljubljeni.
Odprtokodno
Tako Flask kot Django sta odprtokodna projekta. Django najdete na https://github.com/django/django, Flask pa na https://github.com/pallets/flask. Če pogledamo te projekte, je število sodelavcev v Djangu precej večje kot število tistih, ki prispevajo k Flasku.
Zato lahko pričakujemo večjo in hitrejšo podporo, če imamo težave in vprašanja, ki jih je treba rešiti. V nasprotju s tipičnimi predpostavkami je število uporabnikov projekta Flask večje kot pri Djangu.
Zaskrbljujoče dejstvo o Flasku je, da za določeno nalogo morda ne bo stabilne razširitve. Zato delo filtriranja najboljšega ostane pri uporabniku razširitve.
Na primer, v zadnji vadnici smo uporabili Flask-Twitter-oembedder za delo s Twitter-jevim API-jem, vendar je imela ta razširitev nekaj težav, zaradi katerih smo morali s Flask-Cache preiti na Flask-Caching.
Za namestitev Flask-twitter-oembedder iz našega posodobljenega repozitorija Github smo morali vključiti celo izjavo o namestitvi po meri, namesto da bi jo omenili v naši datoteki requrements.txt projekta.
Pogosto vzdrževanje je tipičen izziv, s katerim se boste soočili z odprtokodnim projektom. Podpora in upravljanje odprtokodnega projekta sta običajno vezana na plačljive storitve. Morda boste morali dolgo čakati, da bodo sodelavci v projektu odpravili nekaj težav.
Izvedba
Okvir bučke je lažji od Djanga in deluje bolje z zanemarljivimi razlikami, zlasti ob upoštevanju V / I operacij.
Oglejte si spodnje primerjave. Z večjim številom zahtev ostaja zmogljivost Flaska skoraj enaka. Vendar Django potrebuje več časa za upodobitev predlog po pridobivanju podatkov z uporabo ORM.

Python Flask Vs Django: Tabelarična primerjava
| # | Lastnosti | Django | Bučka |
|---|---|---|---|
| 7. | Spremenljiva interpolacija v predlogah | V templates / demo.html {{tempvar}} | V templates / demo.html {{tempvar}} |
| 1. | Privzeti skrbnik | Vgrajeni skrbniški backend | Namestite Flask-Appbuilder |
| dva | Omogoči privzetega skrbnika | V nastavitvah.py poskrbite, da boste komentirali skrbniško nameščeno aplikacijo. ... # Opredelitev aplikacije INSTALLED_APPS = ( 'Spletna stran', 'django.contrib.admin', # druga koda ) ... | Uvozi AppBuilder in SQLA iz flask_appbuilder, najprej inicializiraj DB in nato Appbuilder iz bučke uvozna bučka iz flask_appbuilder import AppBuilder, SQLA app = bučka (__ ime__) db = SQLA (app) appbuilder = AppBuilder (app, db.session) |
| 3. | Ustvari skrbnika | python manage.py ustvarjauporabnik | bučka fab create-admin |
| 4. | Zbirke podatkov in ORMS | Vgrajen ORM za RDBMS Uporabite Django-nonrel za zaledne strežnike NoSQL | Namestite Flask-SQLAlchemy Razširitev bučke NoSQL, kot je Flask-MongoEngine |
| 5. | Pogledi in poti | URLConf v urls.py iz uvozne poti django.urls iz pogledov .import urlpatterns = ( pot ('/ pot', views.handler_method), # drugih url-ov in upravljavcev ) | Uporabite dekorater @ app.route (“/ path”) v Views, da načrtujete pot s funkcijo. @ app.route (“/ pot”) def handler_method (): # druga koda z nadaljnjo logiko |
| 6. | Predloge za upodabljanje | V pogledih iz django.shortcuts import render def example_view (zahteva): tempvar = 'vrednost_za_predlogo' vrnitev upodabljanja ( prošnja, ‘Demo.html’, {'Tempvar': tempvar} ) | V pogledih iz. uvozna aplikacija iz zahteve za uvoz bučke iz bučke za uvoz render_template @ app.route (“/ pot”) def demo (): tempvar = 'vrednost_za_predlogo' vrni render_template ( »Demo.html«, temp_var = temp_var ) |
| 8. | Prilagodljivost | Manj prilagodljiv | Bolj prilagodljiv |
| 9. | Odločitve o oblikovanju | Manj odločitev o oblikovanju z razvijalci. | Več svobode za razvijalce. |
| 10. | Odklon projekta | Manj odstopanj od ciljev projekta. | Več odstopanj zaradi svobode, dana razvijalcem. |
| enajst | Velikost Codebase | Večja kodna baza | Manjša baza kod |
| 12. | Število API-jev | Več API-jev | Manj API-jev |
| 13. | Vrsta aplikacije | Polne spletne aplikacije | Manjše aplikacije / mikro storitve |
| 14. | RESTful aplikacije | Django REST framework za RESTful Applications. | Za aplikacije RESTful uporabite naslednje razširitve. Bučka-RESTful Bučka-RESTX Vpiši se |
| petnajst | Izvedba | Počasno delovanje, ko je število zahtev veliko. | Vseskozi dosledno delovanje. |
| 16. | Odprtokodni prispevki | Več števila vilic, ur in prevzema. | Manjše število vilic, ur in oddaj. |
| 17. | Razvijalci | Zahteva izkušene razvijalce in ni na voljo za zaposlovanje. | Večina razvijalcev je manj izkušenih in jih najdemo v zadostnem številu. |
Bučka Vs vozlišče
V zvezi s spletom za razvoj spletnih strani se izkaže, da razvoj spleta zahteva združitev različnih tehnologij. Spletno aplikacijo moramo razčleniti na vmesnik in zaledje. Čelni del aplikacije je najbolje razvit v tehnologijah, ki se izvajajo v brskalniku, kot so JavaScript, HTML in CSS.
Zaledje je na splošno razvito v jezikih, ki so primerni za strežniško stran in lahko po potrebi sodelujejo z osnovnim operacijskim sistemom, povezanimi podatkovnimi bazami ali omrežjem.
Vendar je ogrodje, ki temelji na JavaScript, imenovano NodeJS, spremenilo zgoraj navedeni pogled in razvijalcem omogočilo doslednost in enotnost pri razvoju spletnih strani za čelni in zadnji del. Razvijalci bi se lahko razvili za zadnji del z uporabo JavaScript.
V tem razdelku Flask vs Node primerjamo Flask, ki je ogrodje programskega jezika Python, in Node, ki temelji na Chromovem času izvajanja JavaScript na različnih kriterijih, kot so arhitektura, hitrost, podpora skupnosti itd.
| # | Merila | Bučka | Vozlišče |
|---|---|---|---|
| 7. | Odpravljanje napak | Lažje odpraviti napake z razhroščevalnikom Python brez odvisnosti. | Zahteva več truda. Lažje z razvojnim IDE-jem s knjižnico Bluebird / Promise. |
| 1. | Izvajanje jezika | Python | Chromov V8 JavaScript Engine |
| dva | Arhitektura | Neblokirajoči V / I zahteva uporabo neblokirajočih spletnih strežnikov, kot je gunicorn. Kategorija mikrookvirja (zadnji del). | Po svoji naravi zagotavlja neblokirajoči V / I. Kategorija celotnega sklada |
| 3. | Upravitelj paketov | pip | nad morsko gladino |
| 4. | Hitrost | Počasneje zaradi ločenega tolmača Pythona. | Hitreje zaradi prevajalnika Just-In-Time. |
| 5. | Odprtokodno | Da | Da |
| 6. | Podpora skupnosti | Na Githubu 2,3 K ure 51,4 K Zvezde 13,7 K vilice | Na Githubu 2.9 K ure 71,9 K Zvezde 17,6 K vilice |
| 8. | Vzdrževanje | Nizki stroški vzdrževanja | Višje vzdrževanje |
| 9. | Aplikacije v realnem času | Po naravi ni primeren. Vendar pa lahko deluje skupaj s socket.io za primere uporabe v realnem času. Uporabite podaljšek Flask-socketio. | Primerno zaradi arhitekture in modulov za pretakanje, ki temeljijo na dogodkih. Po svoji naravi asinhrono. |
| 10. | Knjižnice | Bolj zrelo in stabilno. | Manj zrele in stabilne, vendar v aktivnem razvoju in izdajah popravkov. |
| enajst | Koda kakovosti | Ustvarjen je izključno za zadnji del. | Včasih je ogrožen zaradi prehodov novih razvijalcev na zaledje. |
| 12. | Sestava ekipe razvijalcev | Skupine so običajno sestavljene iz razvijalcev na zadnji strani in razvijalcev na koncu. Pomisleki so ločeni. | Razvijalci si lahko izmenjujejo vloge in delajo tako za prednji kot za zadnji del. |
| 13. | Integracija z obstoječim sistemom in aplikacijami | Enostavnejša integracija z drugimi obstoječimi zalednimi aplikacijami z uporabo ekosistema Python za strojno učenje in aplikacije za velike podatke. | Precej novo in zahteva ustvarjanje lastnih ali novih knjižnic za integracijo z drugimi obstoječimi aplikacijami. |
Pogosto zastavljena vprašanja
V # 1) Kaj naj se najprej naučim, Django ali Flask?
Odgovor: Bolje je, da gremo najprej s Flaskom. Ko pridobite malo izkušenj pri spletnem razvoju, lahko začnete uporabljati Django. Django domneva, da že veste, kako delujejo spletne aplikacije, in za večino funkcionalnosti skrbi sam.
V # 2) Je Flask ali Django boljši?
Odgovor: Tako Flask kot Django sta odlična in ustrezata svojemu namenu. Django se uporablja za ustvarjanje vidnejših aplikacij v podjetju. Bučka se uporablja za ustvarjanje statičnih in manjših aplikacij. Bučka je primerna tudi za izdelavo prototipov. Z uporabo razširitev Flask pa lahko ustvarimo tudi velike aplikacije.
V # 3) Katera podjetja uporabljajo Flask?
v čem se java razlikuje od c ++
Odgovor: Nekatera podjetja, ki uporabljajo Flask, so Reddit, Mailgun, Netflix, Airbnb itd.
V # 4) Katera spletna mesta uporabljajo Django?
Odgovor: Nekatera spletna mesta, ki uporabljajo Django, so Instagram, Spotify, YouTube, Dropbox, Bitbucket, Eventbrite itd.
Zaključek
Zares se ne bi smeli dolgo fiksirati z enim okvirom. Pripravljeni bi morali biti, da se naučimo novih sklopov tehnologije in sprejmemo trendne sklade. Nekateri od nas želijo sorazmerno izven škatle, vključeni so akumulatorji s togimi cikli sproščanja, ki ohranjajo tesnejšo združljivost nazaj itd.
Če mislite, da spadate bolj v to skupino, morate izbrati Django. Vendar je neverjetno hoditi skupaj z novimi funkcijami in prilagodljivostjo okvira Flask. Ko želite ohraniti skladnost med čelnim delom in zaledjem, lahko izberete ogrodje celotnega sklada, kot je NodeJS.
Uporaba okvira je bolj izbira, ki je odvisna od konteksta in težav, ki jih skušamo rešiti. Izbira okvira je vedno težka. Upamo, da smo v tej vadnici predstavili bistvene točke pregleda in vam bo pomagalo pri dokončanju enega okvira. Priporočamo pa učenje obeh okvirov.
Lažje je začeti s Flaskom, nato pa po pridobitvi nekaj izkušenj pri spletnem razvoju preiti na Django. Če iz nekega razloga vaša prizadevanja za razvoj zahtevajo uporabo JavaScripta, lahko nadaljujete z NodeJS.
=> Tukaj preverite VSE Vadnice za bučke
Priporočeno branje
- Vadnica za Python Django - Kako začeti z Django
- Vzorci za oblikovanje bučk in najboljši postopki za spletne aplikacije
- Predloga bučke, obrazec, pogled in preusmeritev s primeri
- 31 najbolj priljubljenih vprašanj za intervju z Python Flask z odgovori
- Kako nastaviti Node.js preskusno ogrodje: Vadnica za Node.js
- Vadnica za TestNG: Uvod v ogrodje TestNG
- Okvir, ki ga poganjajo ključne besede v selenu, s primeri
- Vadnica Robot Framework - funkcije in namestitev programske opreme