django vs flask vs node
Flask i Django su internetski razvojni okviri temeljeni na Pythonu. Ovaj vodič detaljno uspoređuje Django i Flask. Flask vs Node također je ukratko pokriven:
Oduvijek je bila sveprisutna dilema kada je riječ o pitanju odabira okvira za vaš sljedeći projekt. Svakih nekoliko mjeseci vidite novu tehnologiju i okvir koji nadvlada slabost prethodne koju ste koristili.
Okvir je više poput tihe kulture i skupa konvencija kojih se morate pridržavati da biste bili relevantniji i produktivniji u ovom svijetu tehnologije koji se stalno mijenja. Usporedno s tim, web razvoj se kreće mnogo brže od razvoja radne površine.
=> Pročitajte seriju obuka za tikvice
Što ćete naučiti:
Django protiv tikvice
U ovom uputstvu detaljno izvodimo usporedbu između Djanga i Flaska. Flask i Django su internetski razvojni okviri temeljeni na Pythonu. Mnogi se kreću prema laganim mikrookvirima. Ti su okviri agilni, fleksibilni, mali i pomažu u razvoju mikroservisa i aplikacija bez poslužitelja.
S obzirom na popularnost NodeJS-a, također smo pružili usporedbu čudovišta između tikvice i čvora u odjeljku tikvica protiv čvora. Procjena Djanga i Flaska na sljedećim značajkama pomoći će vam u odabiru jedne preko druge.
Zadani administrator
Oba okvira pružaju bootstrapped administrativnu aplikaciju. U Django je ugrađen i dolazi sa zadanom instalacijom. Međutim, u slučaju Flaska, morate instalirati Flask-Appbuilder da biste imali administrativno sučelje.
U međuvremenu, ne zaboravite stvoriti superkorisnika u Djangu i admin u slučaju Flaska kako biste se mogli prijaviti u administratorsku pozadinu pomoću preglednika.
Baze podataka i ORMS
Django se isporučuje sa zadanim ugrađenim ORM-om koji izravno podržava interakciju sa RDBMS-ima kao što su Oracle, MySQL, PostgreSQL, SQLite itd. Ovaj ORM također podržava generiranje i upravljanje migracijama. Razmjerno je ugodnije stvarati modele baza podataka s ugrađenim provjerama valjanosti.
Flask također ne nameće nijednu određenu metodu i dostupan je za upotrebu s različitim proširenjima koja podržavaju slične značajke kao što je navedeno u slučaju Django. U jednom od tutorijala serije dali smo primjere Flask-SQLAlchemy, Flask-Migrate, Flask-MongoEngine.
Pogledi i rute
Oba okvira imaju mehanizme za deklariranje pogleda zasnovanih na metodama i klasama. U slučaju Djanga, rute i pogledi spominju se u zasebnim datotekama. Također, uvijek moramo eksplicitno proslijediti objekt zahtjeva.
S druge strane, u tikvici možemo upotrijebiti dekorater kako bismo spomenuli rute za odgovarajuće rukovatelje. Objekt zahtjeva u Flasku je globalni i dostupan je samo bez ikakvog eksplicitnog prolaska. Pojmove korištenja pogleda i ruta detaljno smo opisali u jednom od naših vodiča.
Obrasci i predlošci
Django obrasci ugrađeni su u okvir i ne zahtijevaju instalaciju. Obrasci su vrlo bitni za aplikacije, a u Djangu se obrasci mogu prosljeđivati oznakama predloška i dostupni su za prikazivanje u predlošcima. Međutim, u slučaju tikvice moramo koristiti Flask-WTF.
Također smo koristili Flask-Appbuilder za izradu obrazaca. Štoviše, WTF-Alembic se može koristiti za generiranje HTML obrazaca na temelju modela baze podataka.
Oba okvira podržavaju Jinja2 predloške, a oba podržavaju posluživanje statičkih datoteka s ugrađenim funkcijama za generiranje URL-ova resursa i prilično je čest obrazac u svim okvirima danas.
Iako postoje različiti načini prosljeđivanja varijabli i prikazivanja predložaka u njihovim određenim metodama prikaza, oba okvira imaju istu sintaksu pristupa varijablama u predlošcima.
Fleksibilnost
Django je, zbog svoje veličine i složenosti, manje fleksibilan od tikvice. Tikvicu je moguće lako proširiti uz pomoć velikog broja proširenja koja podržava. Stoga je potrebno više vremena i truda za postavljanje tikvice, jer moramo procijeniti više proširenja.
Sloboda dana programerima na neki način rezultira sporijim razvojem i isporukom. S druge strane, Django slijedi niz već uspostavljenih konvencija i slijedi arhetipove koji zahtijevaju manje odstupanje od projektnih ciljeva.
Krivulja ucenja
Gotovo zahtijeva isto toliko vremena za učenje i Djanga i Flaska. Tikvica ima manji API; stoga bi je ljudi mogli uspjeti završiti brže što se tiče temeljnog okvira. Postaje jednako izazovno kada je riječ o korištenju njegovih proširenja. Uskoro bi moglo postati glomazno.
Međutim, samo zato što nije sve upakirano u jedan paket, lakše je prakticirati razdvajanje problema u slučaju okvira Flask.
Preporučujemo da naučite obrasce, a ne sintaksu koja se slijedi. I Django i Flask imaju izvrsnu dokumentaciju. Možete ga lako pratiti dok razvijate značajku.
Veličina i trajanje projekta
Kada radite na većem projektu s većim timovima, bolje je iskoristiti zrelost Djanga i opsežnu podršku suradnika koju ima. Ako je vaš projekt manji i zahtijeva manji broj programera, bolje je ići s Flaskom.
Štoviše, ako će vaš projekt trajati dugo, tada je Django pravi izbor; u suprotnom možete odabrati tikvicu.
Vrsta aplikacije
Ranije se Django smatrao pravim izborom kada je postojao zahtjev za punopravnim web aplikacijama na razini poduzeća. Ali, danas je Flask jednako zreo i može služiti dobro u istim uvjetima.
Međutim, programeri obično više odabiru Flask za razvoj malih ili statičnih web stranica ili za brzu isporuku RESTful API web usluga.
Zapošljavanje programera
Iskustvo stručnih resursa u skladu s okvirom koji koristite se isplati. Možete očekivati brži razvoj, brže testiranje, bržu isporuku i brže ispravke problema.
Prilično je lako pronaći nove programere u slučaju Flaska. Međutim, izazovno je pronaći kvalificirane resurse u Djangu. Nema puno spremnih za angažiranje programera Django. Štoviše, Django okvir prilično je star, pa je stoga većina novih unajmljivanja skupa za zapošljavanje u usporedbi s onima koji su vješti u Flask okviru.
Novi diplomirani tehničari također preuzimaju lagane okvire kao što je Flask jer su industrijski trendovi usmjereni ka stvaranju aplikacija s nevezanim mikrouslugama ili tehnologijom koja podržava stvaranje implementacije bez poslužitelja. Javascript se široko koristi zajedno s okvirima koji su lakši za upotrebu i popularniji.
Otvoreni izvor
I Flask i Django su projekti otvorenog koda. Django možete pronaći na https://github.com/django/django, a Flask na https://github.com/pallets/flask. Gledajući ove projekte, broj suradnika za Django prilično je širi od onih koji daju doprinos za Flask.
Stoga možemo očekivati veću i bržu podršku ako imamo nekih problema i upita koji trebaju rješenje. Suprotno tipičnim pretpostavkama, broj korisnika projekta Flask veći je od onog u Djangu.
Jedna zabrinjavajuća činjenica o Flasku jest da možda neće postojati stabilno proširenje za određeni zadatak. Stoga posao filtriranja najboljeg ostaje na korisniku proširenja.
Na primjer, koristili smo Flask-Twitter-oembedder za rad s Twitterovim API-jem u prošlom vodiču, ali ovo proširenje imalo je nekih problema zbog kojih smo morali prijeći s Flask-Cache na Flask-Caching.
Čak smo morali uključiti prilagođenu instalacijsku izjavu da bismo instalirali Flask-twitter-oembedder iz našeg ažuriranog Github repo-a, umjesto da ga spominjemo u našoj datoteci requrements.txt projekta.
Često održavanje tipičan je izazov s kojim ćete se suočiti s projektom otvorenog koda. Podrška i upravljanje projektom otvorenog koda obično su vezani uz plaćene usluge. Možda ćete trebati čekati dugo vremena da biste riješili nekoliko problema suradnika u projektu.
Izvođenje
Okvir tikvice lakši je od Djanga i bolje se izvodi s neznatnim razlikama, posebno dok se razmatraju I / O operacije.
Pogledajte dolje navedene usporedbe. S porastom zahtjeva, izvedba Flaska ostaje gotovo ista. Međutim, Djangou treba više vremena za generiranje predložaka nakon dohvaćanja podataka pomoću ORM-a.
Python tikvica vs Django: Tabelarna usporedba
# | Značajke | Django | Tikvica |
---|---|---|---|
7 | Varijabilna interpolacija u predlošcima | U predlošcima / demo.html {{tempvar}} | U predlošcima / demo.html {{tempvar}} |
1 | Zadani administrator | Ugrađeni administrativni Backend | Instalirajte Flask-Appbuilder |
dva | Omogući zadani administrator | U postavci settings.py pobrinite se da komentirate aplikaciju koju je instalirao administrator. ... # Definicija aplikacije INSTALLED_APPS = ( 'web stranica', 'django.contrib.admin', # drugi kod ) ... | Uvezite AppBuilder i SQLA iz flask_appbuilder, prvo inicijalizirajte DB, a zatim Appbuilder iz tikvice uvozna tikvica iz flask_appbuilder import AppBuilder, SQLA app = tikvica (__ ime__) db = SQLA (aplikacija) appbuilder = AppBuilder (aplikacija, db.session) |
3 | Izradite administrativnog korisnika | python manage.py kreira korisnika | tikvica fab create-admin |
4 | Baze podataka i ORMS | Ugrađeni ORM za RDBMS Koristite Django-nonrel za NoSQL pozadinske datoteke | Instalirajte Flask-SQLAlchemy NoSQL specifično proširenje tikvice poput Flask-MongoEngine |
5 | Pogledi i rute | URLConf u urls.py iz putanje uvoza django.urls iz .uvoznih pogleda urlpatterns = ( put (’/ put’, views.handler_method), # ostalih URL-ova i rukovatelja ) | Upotrijebite uređivač @ app.route (“/ path”) na Views da biste mapirali rutu s funkcijom. @ app.route (“/ put”) def handler_method (): # drugi kod s daljnjom logikom |
6 | Predlošci prikaza | U pogledima iz django.shortcuts import render def example_view (zahtjev): tempvar = 'vrijednost_za_predlošku' povratak prikaza ( zahtjev, ‘Demo.html’, {'Tempvar': tempvar} ) | U pogledima iz. aplikacija za uvoz iz zahtjeva za uvoz tikvice iz uvoza tikvice render_template @ app.route (“/ put”) def demo (): tempvar = 'vrijednost_za_predlošku' vrati render_template ( 'Demo.html', temp_var = temp_var ) |
8 | Fleksibilnost | Manje fleksibilno | Fleksibilnije |
9 | Odluke o dizajnu | Manje odluka o dizajnu s programerima. | Više slobode programerima. |
10 | Odstupanje od projekta | Manje odstupanje od ciljeva projekta. | Više odstupanja zbog slobode dana programerima. |
jedanaest | Veličina baze podataka | Veća kodna baza | Manja baza kodova |
12 | Broj API-ja | Više API-ja | Manje API-ja |
13 | Vrsta aplikacije | Pune web aplikacije | Manje primjene / mikrousluge |
14 | ODMORNE Aplikacije | Django REST okvir za RESTful aplikacije. | Koristite sljedeća proširenja za RESTful aplikacije. Čutura-OSTALO Tikvica-RESTX Prijaviti se |
petnaest | Izvođenje | Spora izvedba kada je broj zahtjeva velik. | Dosljedna izvedba tijekom. |
16 | Doprinosi otvorenog koda | Više broja račvanja, satova i komitovanja. | Manji broj račvanja, satova i komitovanja. |
17 | Programeri | Potrebni su iskusni programeri i nisu lako dostupni za zapošljavanje. | Većina programera ima manje iskustva i nalazi se u odgovarajućem broju. |
Čutura protiv čvora
S obzirom na hrpu web razvoja, ispada da razvoj za web zahtijeva spajanje različitih tehnologija. Moramo razbiti web aplikaciju na sučelje i pozadinu. Prednji dio aplikacije najbolje je razvijen u tehnologijama koje se pokreću u pregledniku, kao što su JavaScript, HTML i CSS.
Općenito, pozadina je razvijena na jezicima koji su prikladni na strani poslužitelja i mogu komunicirati s osnovnim operativnim sustavom, povezanim bazama podataka ili mrežom kada je to potrebno.
Međutim, okvir zasnovan na JavaScriptu nazvan NodeJS promijenio je gore navedeni pogled i omogućio programerima da imaju dosljednost i ujednačenost u razvoju prednjih i stražnjih stranica za web aplikacije. Programeri bi se mogli razvijati za pozadinu koristeći JavaScript.
U ovom odjeljku Flask vs Node uspoređujemo Flask, koji je okvir koji se temelji na programskom jeziku Python, s Nodeom, koji se temelji na Chromeovom vremenu izvođenja JavaScript-a na raznim kriterijima kao što su arhitektura, brzina, podrška zajednice itd.
# | Kriteriji | Tikvica | Čvor |
---|---|---|---|
7 | Otklanjanje pogrešaka | Jednostavnije otklanjanje pogrešaka pomoću Python programa za uklanjanje pogrešaka bez ovisnosti. | Zahtijeva više truda. Jednostavnije s razvojnim IDE-om s knjižnicom Bluebird / Promise. |
1 | Vrijeme izvođenja jezika | Piton | Chromeov V8 JavaScript Engine |
dva | Arhitektura | Neblokirajući I / O zahtijeva upotrebu web-poslužitelja koji ne blokiraju, kao što je gunicorn. Kategorija mikrookvir (stražnji kraj). | Inherentno pruža ne-blokirajući I / O. Fullstack kategorija |
3 | Upravitelj paketa | pip | iznad razine mora |
4 | Ubrzati | Sporije zbog zasebnog tumača Pythona. | Brži zbog kompajlera Just-In-Time. |
5 | Otvoreni izvor | Da | Da |
6 | Podrška zajednice | Na Githubu 2,3 K satova 51,4 K zvijezde 13,7 K Vilice | Na Githubu 2,9 K Satovi 71,9 K zvijezda Vilice 17,6 K |
8 | Održavanje | Slabo održavanje | Veće održavanje |
9 | Aplikacije u stvarnom vremenu | Suštinski nije prikladno. Međutim, može raditi zajedno sa socket.io za slučajeve korištenja u stvarnom vremenu. Upotrijebite nastavak Flask-socketio. | Pogodno zbog arhitekture i modula za strujanje vođenih događajima. U osnovi asinkroni. |
10 | Knjižnice | Zrelije i stabilnije. | Manje zrelo i stabilno, ali u aktivnom izdanju i popravcima. |
jedanaest | Kvaliteta koda | Ekskluzivno je stvoren za stražnji kraj. | Ponekad je ugrožen zbog prelaska novih razvojnih programera na pozadinu. |
12 | Sastav razvojnog tima | Timovi se obično sastoje od back end programera i front end programera. Zabrinutost je odvojena. | Programeri mogu razmijeniti uloge i raditi i za prednji i za zadnji kraj. |
13 | Integracija sa postojećim sustavom i aplikacijama | Jednostavnija integracija s ostalim postojećim pozadinskim aplikacijama pomoću Python-ovog ekosustava za strojno učenje i aplikacije velikih podataka. | Prilično novo i zahtijeva stvaranje prilagođenih ili novih knjižnica za integraciju s drugim postojećim aplikacijama. |
Često postavljana pitanja
P # 1) Što bih prvo trebao naučiti, Django ili Flask?
Odgovor: Bolje je prvo ići s tikvicom. Nakon što steknete malo iskustva u web razvoju, možete se baviti Djangom. Django pretpostavlja da već znate kako funkcioniraju web aplikacije i sam se brine za većinu funkcionalnosti.
P # 2) Je li Flask ili Django bolji?
Odgovor: I Flask i Django izvrsni su i odgovaraju svojoj svrsi. Django se koristi za stvaranje istaknutijih aplikacija na razini poduzeća. Tikvica se koristi za stvaranje statičkih i manjih aplikacija. Tikvica je također pogodna za izradu prototipa. Međutim, pomoću ekstenzija Flask možemo stvoriti i velike aplikacije.
P # 3) Koje tvrtke koriste tikvicu?
najbolja špijunska aplikacija za mobitel
Odgovor: Neke od tvrtki koje koriste Flask su Reddit, Mailgun, Netflix, Airbnb itd.
P # 4) Koje web stranice koriste Django?
Odgovor: Neke web stranice koje koriste Django su Instagram, Spotify, YouTube, Dropbox, Bitbucket, Eventbrite itd.
Zaključak
Ne bismo se trebali dugo fiksirati s jednim okvirom. Morali bismo biti spremni naučiti nove tehnološke setove i usvojiti trendove koji se tamo nalaze. Neki od nas žele razmjerno izvan kutije, pristupi s baterijom s krutim ciklusima oslobađanja, održavanjem čvršće kompatibilnosti unatrag itd.
Ako mislite da više pripadate ovoj grupi, tada morate odabrati Django. Međutim, nevjerojatno je hodati zajedno s novim značajkama i fleksibilnošću okvira Flask. Kada želite zadržati dosljednost između prednjeg kraja i pozadine, možete odabrati okvir s punim stogom, kao što je NodeJS.
Ideja s okvirom više je izbor koji ovisi o kontekstu i problemima koje pokušavamo riješiti. Odabir okvira uvijek je teško. Nadamo se da smo u ovom vodiču predstavili osnovne točke pregleda i da će vam pomoći u finaliziranju jednog okvira. Međutim, preporučujemo učenje oba okvira.
Lakše je započeti s Flaskom, a zatim prijeći na Django nakon stjecanja određenog iskustva u web razvoju. Ako iz nekog razloga vaši napori u razvoju zahtijevaju upotrebu JavaScript-a, onda možete nastaviti s NodeJS-om.
=> Ovdje provjerite SVE tutorijale za tikvice
Preporučena literatura
- Vodič za Python Django - Početak rada s Djangom
- Uzorci dizajna tikvica i najbolji primjeri iz prakse za web aplikacije
- Predložak tikvice, obrazac, pogled i preusmjeravanje s primjerima
- Top 31 popularna pitanja za intervju s Python tikvicom s odgovorima
- Kako postaviti okvir za testiranje Node.js: Vodič za Node.js
- Vodič za TestNG: Uvod u TestNG Framework
- Okvir vođen ključnim riječima u selenu s primjerima
- Vodič za Robot Framework - značajke i instalacija softvera