django vs flask vs node
Flask a Django jsou vývojové rámce pro web založený na Pythonu. Tento kurz podrobně porovnává Django vs Flask. Flask vs Node je také stručně pokryta:
Vždy to bylo všudypřítomné dilema, pokud jde o otázku výběru rámce pro váš další projekt. Každých několik měsíců uvidíte novou technologii a rámec, který překonává slabost předchozí, kterou jste použili.
Rámec je spíše jako tichá kultura a soubor konvencí, kterými se musíte řídit, abyste byli v tomto neustále se měnícím světě technologií relevantnější a produktivnější. Srovnatelně se vývoj webu pohybuje mnohem rychleji než vývoj desktopů.
=> Přečtěte si sérii školení o baňce
Co se naučíte:
Baňka Django vs.
V tomto kurzu podrobně nakreslíme srovnání mezi Django a Flask. Flask a Django jsou vývojové rámce pro web založený na Pythonu. Mnoho z nich směřuje k odlehčeným mikrorámům. Tyto rámce jsou agilní, flexibilní, malé a pomáhají vyvíjet mikroslužby a aplikace bez serveru.
Vzhledem k popularitě NodeJS jsme také poskytli zázračné srovnání mezi Flask a Node v sekci Flask vs. Node. Vyhodnocení Django a Flask na následujících funkcích vám pomůže při výběru jednoho nad druhým.
Výchozí správce
Obě rozhraní poskytují zaváděcí administrátorskou aplikaci. V Django je integrován a je dodáván s výchozí instalací. V případě Flask je však nutné nainstalovat Flask-Appbuilder, abyste měli administrátorské rozhraní.
Mezitím nezapomeňte vytvořit superuživatele v Django a admin v případě Flask, abyste se mohli přihlásit do administrátorského backendu pomocí prohlížeče.
Databáze a ORMS
Django je dodáváno s výchozím vestavěným ORM, který jednoznačně podporuje interakci s RDBMS, jako jsou Oracle, MySQL, PostgreSQL, SQLite atd. Tento ORM také podporuje generování a správu migrací. Je relativně pohodlnější vytvářet databázové modely s vestavěnými validacemi.
Flask také neukládá žádnou konkrétní metodu a je k dispozici pro použití s různými rozšířeními, které podporují podobné funkce, jak je uvedeno v případě Django. V jednom z cvičení série jsme uvedli příklady Flask-SQLAlchemy, Flask-Migrate, Flask-MongoEngine.
Pohledy a trasy
Oba rámce mají mechanismy pro deklaraci pohledů založených na metodách a třídách. V případě Djanga jsou trasy a zobrazení zmíněny v samostatných souborech. Také vždy musíme explicitně předat objekt požadavku.
Na druhou stranu v Baňce můžeme pomocí dekorátoru zmínit trasy pro odpovídající obslužné rutiny. Objekt požadavku v baňce je globální a je k dispozici pouze bez výslovného předávání. V jednom z našich výukových programů jsme podrobně popsali koncepty používání pohledů a tras.
Formuláře a šablony
Formuláře Django jsou zabudovány do rámce a nevyžadují žádnou instalaci. Forms are pretty essential to applications, and in Django, the Forms can be passed to template tags, and are available to be rendered in templates. V případě Flask však musíme použít Flask-WTF.
K vytváření formulářů jsme také využili Flask-Appbuilder. Kromě toho lze WTF-Alembic použít ke generování formulářů HTML založených na databázových modelech.
Obě rámce podporují šablonování Jinja2 a obě podporují poskytování statických souborů s vestavěnými funkcemi pro generování adres URL zdrojů a je dnes docela běžným vzorem ve všech rámcích.
Ačkoli existují různé způsoby předání proměnných a vykreslení šablon v jejich konkrétních metodách zobrazení, obě rozhraní mají stejnou syntaxi přístupu k proměnným v šablonách.
Flexibilita
Django je díky své naprosté velikosti a složitosti méně flexibilní než Flask. Baňku lze snadno rozšířit pomocí velkého množství rozšíření, která podporuje. Proto potřebuje více času a úsilí k nastavení Flask, protože musíme vyhodnotit více rozšíření.
Svoboda poskytnutá vývojářům určitým způsobem vede k pomalejšímu vývoji a dodání. Na druhou stranu Django dodržuje řadu již zavedených konvencí a sleduje archetypy, které vyžadují menší odchylku od cílů a záměrů projektu.
Křivka učení
Naučit se Django i Flask vyžaduje téměř stejnou dobu. Flask má menší API; lidé by proto mohli být schopni dokončit to rychleji, pokud jde o základní rámec. Pokud jde o používání jeho rozšíření, stává se stejně náročným. Brzy by to mohlo být těžkopádné.
Jen proto, že vše není zabaleno v jednom balíčku, je snadnější procvičit oddělení obav v případě rámce Flask.
Doporučujeme vám naučit se vzory a nikoli syntaxi, která je dodržována. Django i Flask mají vynikající dokumentaci. Při vývoji funkce jej můžete snadno sledovat.
Velikost a doba trvání projektu
Když pracujete na větším projektu s většími týmy, je lepší využít výhody vyspělosti Django a jeho rozsáhlé podpory přispěvatelů. Pokud je váš projekt menší a vyžaduje menší počet vývojářů, je lepší použít Flask.
Navíc, pokud váš projekt bude trvat dlouho, pak je Django tou správnou volbou; jinak můžete vybrat baňku.
typ aplikace
Dříve bylo Django považováno za správnou volbu, když existoval požadavek na plnohodnotné podnikové webové aplikace. Ale dnes je Baňka stejně vyspělá a může dobře sloužit za stejných podmínek.
Vývojáři však mají tendenci volit Flask více pro vývoj malých nebo statických webů nebo při rychlé implementaci webových služeb RESTful API.
Nábor vývojářů
Mít kvalifikované zdroje v konvenci rámce, který používáte, se vyplatí. Můžete očekávat rychlejší vývoj, rychlejší testování, rychlejší doručování a rychlejší opravy problémů.
V případě Flask je docela snadné najít nové vývojáře. Je však náročné najít v Djangu kvalifikované zdroje. Vývojářů Django není mnoho připravených k pronájmu. Rámec Django je navíc poměrně starý, a proto je většina nových najímání nákladná ve srovnání s těmi, kteří mají zkušenosti s rámcem Flask.
Noví absolventi technických oborů také vyzvedávají lehké rámce, jako je Flask, protože trendy v oboru směřují k vytváření aplikací s oddělenými mikroslužbami nebo k technologii, která podporuje vytvoření implementace bez serveru. Javascript je široce používán spolu s rámci, které se snadněji používají a jsou populárnější.
Otevřený zdroj
Flask i Django jsou open-source projekty. Django najdete na https://github.com/django/django a Flask na https://github.com/pallets/flask. Podíváme-li se na tyto projekty, je počet přispěvatelů do Django poměrně rozsáhlejší než těch, kteří přispívají do Flask.
Proto můžeme očekávat větší a rychlejší podporu, pokud máme nějaké problémy a dotazy, které vyžadují řešení. Na rozdíl od typických předpokladů je počet uživatelů projektu Flask vyšší než u Djanga.
Jedním z faktů o Flasku je, že nemusí existovat stabilní rozšíření pro konkrétní úkol. Filtrování toho nejlepšího tedy zůstává na uživateli rozšíření.
Například, v posledním tutoriálu jsme pro práci s API Twitteru použili Flask-Twitter-oembedder, ale toto rozšíření mělo nějaké problémy, kvůli kterým jsme museli přepnout z Flask-Cache na Flask-Caching.
Dokonce jsme museli zahrnout vlastní instalační prohlášení k instalaci Flask-twitter-oembedder z našeho aktualizovaného repozitáře Github, místo abychom to zmínili v našem souboru requrements.txt projektu.
Častá údržba je typickou výzvou, které budete čelit v rámci projektu s otevřeným zdrojovým kódem. Podpora a správa projektu s otevřeným zdrojovým kódem jsou obvykle spojeny s placenými službami. Možná budete muset dlouho čekat, než se od přispěvatelů do projektu dostane několik problémů.
Výkon
Flask framework je lehčí než Django a má lepší výkon se zanedbatelnými rozdíly, zejména při zvažování I / O operací.
Podívejte se na níže uvedená srovnání. S nárůstem požadavků zůstává výkon Flask téměř stejný. Django však trvá načítání šablon po načtení dat pomocí ORM více času.
Python Flask Vs Django: Tabelární srovnání
# | Funkce | Django | Baňka |
---|---|---|---|
7 | Variabilní interpolace v šablonách | V šablonách / demo.html {{tempvar}} | V šablonách / demo.html {{tempvar}} |
jeden | Výchozí správce | Integrovaný administrátorský backend | Nainstalujte Flask-Appbuilder |
dva | Povolit výchozího správce | V souboru settings.py nezapomeňte odkomentovat aplikaci nainstalovanou správcem. ... # Definice aplikace INSTALLED_APPS = ( 'webová stránka', 'django.contrib.admin', # jiný kód ) ... | Importujte AppBuilder a SQLA z flask_appbuilder, nejprve inicializujte DB a poté Appbuilder z baňky na dovoz baňky z flask_appbuilder import AppBuilder, SQLA aplikace = Baňka (__ name__) db = SQLA (aplikace) appbuilder = AppBuilder (aplikace, db.session) |
3 | Vytvořit administrátora | python manage.py vytvoří superuživatele | baňka fab create-admin |
4 | Databáze a ORMS | Integrovaný ORM pro RDBMS Pro backend NoSQL použijte Django-nonrel | Nainstalujte Flask-SQLAlchemy Flask-Extension specifický pro NoSQL, jako je Flask-MongoEngine |
5 | Pohledy a trasy | URLConf v urls.py z cesty importu django.urls ze zobrazení .import urlpatterns = ( cesta („/ cesta“, views.handler_method), # další adresy URL a manipulátory ) | Pomocí nástroje @ app.route („/ path“) v zobrazeních namapujte trasu pomocí funkce. @ app.route („/ cesta“) def handler_method (): # jiný kód s další logikou |
6 | Vykreslení šablon | V pohledech z django.shortcuts importovat vykreslení def example_view (požadavek): tempvar = ”value_for_template” vrátit vykreslení ( žádost, „Demo.html“, {'Tempvar': tempvar} ) | V pohledech z . importovat aplikaci z požadavku na import baňky z baňky import render_template @ app.route („/ cesta“) def demo (): tempvar = ”value_for_template” vrátit render_template ( „Demo.html“, temp_var = temp_var ) |
8 | Flexibilita | Méně flexibilní | Flexibilnější |
9 | Rozhodnutí o návrhu | Méně návrhových rozhodnutí s vývojáři. | Více svobody pro vývojáře. |
10 | Odchylka projektu | Menší odchylka od cílů projektu. | Více odchylek kvůli svobodě poskytované vývojářům. |
jedenáct | Velikost kódové základny | Větší kódová základna | Menší kódová základna |
12 | Počet API | Další rozhraní API | Méně API |
13 | typ aplikace | Plnohodnotné webové aplikace | Menší aplikace / mikroslužby |
14 | RESTful aplikace | Django REST framework pro RESTful aplikace. | Pro aplikace RESTful použijte následující rozšíření. Baňka-RESTful Baňka-RESTX Přihlásit se |
patnáct | Výkon | Pomalý výkon, když je počet požadavků velký. | Konzistentní výkon po celou dobu. |
16 | Open Source příspěvky | Další počet vidlic, hodinek a závazků. | Menší počet vidlic, hodinek a závazků. |
17 | Vývojáři | Vyžaduje zkušené vývojáře a není snadné je získat pro nábor. | Většina vývojářů je méně zkušená a nachází se v dostatečném počtu. |
Uzel Flask Vs
S ohledem na sadu pro vývoj webových aplikací se ukazuje, že vývoj pro web vyžaduje sloučení různých technologií. Musíme rozdělit webovou aplikaci na frontend a backend. Front-end část aplikace je nejlépe vyvinuta v technologiích, které běží v prohlížeči, jako je JavaScript, HTML a CSS.
Obecně je backend vyvíjen v jazycích, které jsou vhodné na straně serveru a v případě potřeby mohou komunikovat se základním operačním systémem, připojenými databázemi nebo sítí.
Rámec založený na JavaScriptu s názvem NodeJS však změnil výše uvedený pohled a umožnil vývojářům mít konzistenci a jednotnost ve vývoji front-endu a back-endu pro webové aplikace. Vývojáři mohli vyvíjet pro back-end pomocí JavaScriptu.
V této části Flask vs Node porovnáváme Flask, což je rámec založený na programovacím jazyce Python, s Node, který je založen na běhu JavaScriptu Chrome na různých kritériích, jako je architektura, rychlost, podpora komunity atd.
# | Kritéria | Baňka | Uzel |
---|---|---|---|
7 | Ladění | Snadnější ladění s debuggerem Pythonu bez závislostí. | Vyžaduje více úsilí. Snadnější s vývojovým IDE s knihovnou Bluebird / Promise. |
jeden | Language Runtime | Krajta | Chrome V8 JavaScript Engine |
dva | Architektura | Neblokující I / O vyžaduje použití neblokujících webových serverů, jako je gunicorn. Kategorie mikroframework (zadní část). | Inherentní Poskytuje neblokující I / O. Fullstack kategorie |
3 | Správce balíčků | pip | nad hladinou moře |
4 | Rychlost | Pomaleji kvůli samostatnému tlumočníkovi Pythonu. | Rychlejší díky kompilátoru Just-In-Time. |
5 | Otevřený zdroj | Ano | Ano |
6 | Podpora komunity | Na Githubu Hodinky 2.3 K 51,4 tis. Hvězd 13,7 K vidlice | Na Githubu 2,9 K hodinky 71,9 tis. Hvězd Vidlice 17,6 K |
8 | Údržba | Nízká údržba | Vyšší údržba |
9 | Aplikace v reálném čase | Ve své podstatě nevhodné. Může však fungovat společně s socket.io pro případy použití v reálném čase. Použijte rozšíření Flask-socketio. | Vhodné díky architektuře řízené událostmi a streamovacím modulům. Inherentně asynchronní. |
10 | Knihovny | Vyspělejší a stabilnější. | Méně zralý a stabilní, ale v rámci aktivního vývoje a vydání oprav. |
jedenáct | Kvalita kódu | Je vytvořen výhradně pro back-end. | Někdy je kompromitován kvůli přechodu nových backendových vývojářů na backend. |
12 | Složení vývojového týmu | Týmy se obvykle skládají z back-endových vývojářů a front-endových vývojářů. Obavy jsou oddělené. | Vývojáři si mohou vyměňovat role a pracovat pro front-end i back-end. |
13 | Integrace se stávajícím systémem a aplikacemi | Snadnější integrace s jinými existujícími staršími back-endovými aplikacemi pomocí Pythonova ekosystému pro strojové učení a velké datové aplikace. | Docela nové a vyžaduje vytvoření vlastních nebo nových knihoven pro integraci s jinými existujícími aplikacemi. |
Často kladené otázky
Otázka č. 1) Co bych se měl nejprve naučit, Django nebo Flask?
Odpovědět: Je lepší jít nejprve s Flaskem. Jakmile získáte malé zkušenosti s vývojem webu, můžete se Django začít věnovat. Django předpokládá, že již víte, jak webové aplikace fungují, a o většinu funkcí se stará sám.
Otázka 2) Je Flask nebo Django lepší?
Odpovědět: Flask i Django jsou vynikající a hodí se ke svému účelu. Django se používá k vytváření prominentnějších podnikových aplikací. Baňka se používá k vytváření statických a menších aplikací. Baňka je také vhodná pro prototypování. S využitím rozšíření Flask však můžeme vytvářet i velké aplikace.
Otázka č. 3) Jaké společnosti používají banku?
jak deklarovat vícerozměrné pole v java
Odpovědět: Některé ze společností, které používají Flask, jsou Reddit, Mailgun, Netflix, Airbnb atd.
Otázka č. 4) Jaké stránky používají Django?
Odpovědět: Některé z webů, které používají Django, jsou Instagram, Spotify, YouTube, Dropbox, Bitbucket, Eventbrite atd.
Závěr
Neměli bychom se opravdu dlouho fixovat na jeden rámec. Měli bychom být připraveni naučit se nové sady technologií a přijmout trendové komíny. Někteří z nás chtějí srovnatelně po vybalení, přístupy zahrnující baterii s rigidními cykly uvolnění, udržování těsnější zpětné kompatibility atd.
Pokud si myslíte, že do této skupiny patříte více, musíte zvolit Django. Je však neuvěřitelné jít také s novými funkcemi a flexibilitou rámce Flask. Pokud chcete zachovat konzistenci mezi frontendem a backendem, můžete zvolit framework s plným zásobníkem, jako je NodeJS.
Jít s rámcem je spíše volba, která závisí na kontextu a problémech, které se snažíme vyřešit. Výběr rámce je vždy obtížný. Doufáme, že jsme v tomto kurzu představili základní body kontroly a pomohou vám s dokončením jednoho rámce. Doporučujeme však naučit se oba rámce.
Je snazší začít s Flaskem a poté přejít na Django po získání zkušeností s vývojem webu. Pokud vaše vývojové úsilí z nějakého důvodu vyžaduje použití JavaScriptu, můžete pokračovat s NodeJS.
=> Podívejte se na VŠECHNY návody pro baňky zde
Doporučené čtení
- Výukový program Python Django - Začínáme s Django
- Baňky návrhové vzory a osvědčené postupy pro webové aplikace
- Šablona baňky, formulář, zobrazení a přesměrování s příklady
- Top 31 populárních otázek na rozhovor s Python Flask s odpověďmi
- Jak nastavit rámec testování Node.js: Výukový program Node.js
- Výukový program TestNG: Úvod do TestNG Framework
- Rámec poháněný klíčovým slovem na selenu s příklady
- Výukový program pro robotické rámce - funkce a instalace softwaru