Webový framework je knihovna kódu, která urychluje a usnadňuje vývoj webových aplikací tím, že poskytuje společné vzory pro vytváření spolehlivých, škálovatelných a udržovatelných webových aplikací. Po začátku roku 2000 profesionální projekty vývoje webových aplikacívždy používají existující webový framework, s výjimkou velmi neobvyklých situací.
Proč jsou webové frameworky užitečné?
Webové frameworky zapouzdřují to, co se vývojáři naučili za posledních dvacet let při programování stránek a aplikací pro web. Frameworky usnadňují opakované použití kódu pro běžné operace HTTP a strukturování projektů tak, aby ostatní vývojáři se znalostí frameworku mohli aplikaci rychle vytvořit a udržovat.
Obvyklá funkčnost webových frameworků
Frameworky poskytují ve svém kódu nebo prostřednictvím rozšíření funkce pro provádění běžných operací potřebných k provozu webových aplikací. Mezi tyto společné operace patří např:
- Směrování URL
- Zpracování a validace vstupních formulářů
- Formáty HTML, XML, JSON a další výstupní formáty pomocí šablonovacího jádra
- Konfigurace připojení k databázi a manipulace s trvalými daty pomocí objektově-relačního mapovače (ORM)
- Zabezpečení webu proti podvržení požadavku (CSRF), SQL Injection,Cross-site Scripting (XSS) a dalším běžným škodlivým útokům
- Ukládání a načítání relací
Ne všechny webové rámce obsahují kód pro všechny výše uvedené funkce.Rámce spadají do spektra od provádění jednoho případu použití až po poskytováníkaždé známé funkce webového rámce každému vývojáři. Některé frameworky uplatňují přístup „batteries-included“, kdy je vše možné dodáváno s frameworkem, zatímco jiné mají minimální základní balíček, který je přístupný rozšířením poskytovaným jinými balíčky.
Například framework pro webové aplikace Django obsahuje vrstvu Django ORM, která umožňuje vývojáři provádět operace čtení, zápisu, dotazování a mazání v relačních databázích v kódu jazyka Python, nikoli v jazyce SQL.
ORM frameworku Django však nemůže bez výrazných úprav fungovat na nerelačních (NoSQL) databázích, jako jsouMongoDB nebo Cassandra.
Některé další webové frameworky, jako jsou Flask aPyramid, je snazší používat s nerelačními databázemi díky začlenění externích knihoven Pythonu.Existuje spektrum mezi minimální funkčností se snadnou rozšiřitelností na jedné straně a zahrnutím všeho do frameworku s těsnou integrací na straně druhé.
Musím používat webový framework?
Zda ve svém projektu použijete webový framework, závisí na vašichzkušenostech s vývojem webových aplikací a na tom, čeho se snažíte dosáhnout. Pokud jste programátor začátečník a chcete na webové aplikaci pracovat jen jako na výukovém projektu, pak vám framework může pomoci pochopit výše uvedené koncepty, jako je směrování URL, manipulace s daty a ověřování, které jsou společné pro většinu webových aplikací.
Na druhou stranu, pokud jste zkušený programátor se značnými zkušenostmi s vývojem webových aplikací, můžete mít pocit, že existující frameworky neodpovídají požadavkům vašeho projektu. V takovém případě můžete kombinovat open source knihovny, jako je Werkzeug forWSGI plumbing, s vlastním kódem a vytvořit si tak vlastní framework. V ekosystému Pythonu je stále spousta prostoru pro nové frameworky, které uspokojí potřeby webových vývojářů, jež Django,Flask, Pyramid, Bottle a mnoho dalších neuspokojují.
Zkrátka, to, zda k vytvoření webové aplikace potřebujete použít webový framework, závisí na vašich zkušenostech a na tom, čeho se snažíte dosáhnout.Použití webového frameworku k vytvoření webové aplikace určitě není nutné,ale většině vývojářů v mnoha případech usnadní život.
Srovnání webových frameworků
V pořadu Talk Python to Me vyšel díl podcastu s podrobným srovnáním frameworků Django,Flask, Tornado a Pyramid.
Zajímá vás, jak je strukturovaný kód v projektu Django ve srovnání s Flaskem? Podívejte se na tento tutoriál o webové aplikaci Django a poté si prohlédněte stejnou aplikaci sestavenou pomocí Flasku.
Existuje také repozitář s názvemcompare-python-web-frameworks, kde je stejná webová aplikace nakódována s různými webovými frameworky Pythonu, šablonovacími enginy a objektově-relačními mapovači.
Zdroje o webových frameworcích
-
Sestavení vlastního webového frameworku v Pythonuje skvělý způsob, jak se naučit, jak funguje WSGIa mnoho dalších částí, které dohromady tvoří webové frameworky užitečné pro webové vývojáře.
-
12 požadavků za sekunduzkoumá, jak si vede tradičně synchronní webový frameworkFlask ve srovnání s asynchronním frameworkem, jako jeSanic, v umělém, jednoduchém benchmarku. Z výsledků se zdá, že Sanic je mnohem rychlejší než Flask, ale jakmile do projektu přidáte byť jen základní množství funkcí, včetně databázových dotazů a šablonování, výsledky se vyrovnají. Skvělé čtení s širšími výsledky nabízí také Miguel Grinberv tomtočlánku, kde čtenáře žádá, abyIgnorovali všechny benchmarky výkonu webu, včetně tohoto.
-
Když se učíte používat jeden nebo více webových frameworků, je užitečné mít představu o tom, co kód pod pokličkou dělá. Tento příspěvek o sestaveníjednoduchého rámce Python od nuly ukazuje, jak mohou fungovat připojení HTTP, směrování a požadavky v pouhých320 řádcích kódu. Tento příspěvek je úžasný, i když výsledný frameworkje zjednodušením toho, co vývojářům umožňují frameworky jako Django,Flask a Pyramid.
-
Existuje také další, novější vícedílný tutoriál o budování vlastního webového frameworku v Pythonu. Tento seriál vychází z projektualcazar, který autor kóduje pro účely výuky:
- Díl 1: Obsluha požadavků
- Díl 2: Trasy, obslužné programy založené na třídách a testování jednotek
- Díl 3: Test Client and Templating Support
- Part 4: Exception Handling, Static Files and Middleware
-
Check out the answer to the“What is a web framework and how does it compare to LAMP?“question on Stack Overflow.
-
Another great series that digs behind the web framework magic is“Web Application from Scratch“. The four parts are:
- Part 1: handling HTTP requests and responses
- Part 2: abstracting Requests, Responses and Servers
- Part 3: request handlers and middleware
- Part 4: abstracting applications
-
Frameworks is a really well done short videothat explains how to choose between web frameworks. The author has someparticular opinions about what should be in a framework. For the most partI agree although I’ve found sessions and database ORMs to be a helpfulpart of a framework when done well.
-
Django vs Flask vs Pyramid:
-
Tento fascinující příspěvek na blogu se zabývá složitostí kódu několika webových frameworků Pythonu a poskytuje vizualizace založené na jejich kódových bázích.
-
Srovnávací testy webových frameworků Pythonuje test odezvy frameworku s kódováním objektu doJSON a jeho vrácením jako odpovědi, stejně jako načtením dat zdatabáze a jejich vykreslením v šabloně. Nebyly zjištěny žádné přesvědčivé výsledky, ale přesto je zábavné si o výstupech přečíst.
-
Jaké webové frameworky používáte a proč jsou úžasné?“ je jazykově agnostická diskuse na Redditu o webových frameworcích. Je zajímavézjistit, co se programátorům v jiných jazycích líbí a nelíbí na jejichsouboru webových frameworků ve srovnání s hlavními frameworky Pythonu.
-
Tato otázka, na kterou hlasovali uživatelé stránky s odpověďmi, se ptala: „Jaké jsou nejlepší webové frameworky Pythonu pro obecné účely použitelné v produkci?“ Hlasy nejsou tak důležité jako seznam mnoha frameworků, které jsou vývojářům Pythonu k dispozici.
-
Django vs. Django. Flask v roce 2019: Který framework zvolitse zabývá nejlepšími případy použití Djanga a Flasku spolu s tím, co je činí jedinečnými z hlediska vzdělávání a vývoje.
-
11 nových webových frameworků pro Pythonmá stručnou informaci o několika novějších frameworcích, které teprve vznikají,jako jsou Sanic, Masonitea Molten.
Kontrolní seznam pro výuku webových frameworků
-
Vyberte si hlavní webový framework pro Python (doporučujeme Django neboFlask) a držte se ho. Když teprve začínáte, je nejlepší naučit se nejprve jeden framework, místo abyste poskakovali a snažili se porozumět všem frameworkům.
-
Work through a detailed tutorial found within the resources links on theframework’s page.
-
Study open source examples built with your framework of choice so you cantake parts of those projects and reuse the code in your application.
-
Build the first simple iteration of your web application then go tothe deployment section to make it accessible on theweb.