13 nejlepších webových frameworků pro Python, které se naučíte v roce 2020

Frameworky usnadňují vývojářům život tím, že jim nabízejí strukturu pro vývoj aplikací. Automatizují implementaci běžných řešení, čímž zkracují dobu vývoje a umožňují vývojářům soustředit se na logiku aplikace namísto rutinních prvků.

V tomto článku se s vámi podělíme o seznam dvanácti nejlepších webových frameworků v jazyce Python, které se vám budou hodit na cestě k tomu, abyste se stali profesionálním backendovým vývojářem a zlepšili své stávající dovednosti.

Proč frameworky Python? Společnost Stack Overflow nedávno zveřejnila výsledky svého každoročního průzkumu mezi vývojáři pro rok 2019, v němž prohlásila Python za nejrychleji rostoucí hlavní programovací jazyk.

zdroj: stackoverflow.blog

Mezi zdaleka nejoblíbenější frameworky Pythonu patří Django a Flask. To však neznamená, že byste měli podceňovat potenciál ostatních frameworků. Každý z nich disponuje funkcemi, které by mohly být ideální pro váš webový projekt.

zdroj: jetbrains.com

Mějte na paměti, že rámce Pythonu, o kterých zde budeme hovořit, nejsou uvedeny v žádném konkrétním pořadí: zaměřili jsme se na to, abychom vám ukázali, co můžete dělat, na rozdíl od toho, abychom vám říkali, co byste měli dělat.

Několik věcí, které je třeba zvážit

Při rozhodování o tom, který rámec použít, se jednak podívejte na velikost a složitost vašeho projektu. Pokud to, co chcete vyvinout, je rozsáhlý systém plný funkcí a požadavků, může být správnou volbou full-stack framework. Pokud je vaše aplikace na menší a jednodušší straně, měli byste pravděpodobně zvážit mikroframework.

Druhé, musíte zkontrolovat, zda framework, o kterém uvažujete, dokáže škálovat vertikálně a horizontálně. To je nutností u projektů, které mají běžet na několika serverech, zvládat obrovský provoz a podporovat přidávání nových funkcí pro rozšíření funkčnosti.

Jakmile si vyberete framework, kontaktujte tým vývojářů a požádejte je o informace o odhadovaných nákladech na vývoj aplikace.

Informace o typu a zaměření některých frameworků najdete zde. Konečné rozhodnutí by však mělo vycházet z vaší vlastní představy o projektu a úkolech, které chcete zjednodušit.

Frameworky však mohou také stát v cestě vývoji. Při výběru full-stack frameworku se často upisujete řadě omezení. Samozřejmě můžete najít způsoby, jak je obejít, ale dejte si pozor, abyste nestrávili více času bojem o vlastní svobodu, než kdybyste psali aplikaci v čistém Pythonu.

Frameworky full-stack

Framework full-stack neboli podnikový framework je komplexní řešení s knihovnami nakonfigurovanými tak, aby spolu bez problémů spolupracovaly. Podporuje vývoj backendových služeb, frontendových rozhraní a databází. Full-stack framework poskytuje vše, co vývojář potřebuje k vytvoření aplikace. Python nabízí více než jeden full-stack framework.

Django

Oficiální webové stránky | GitHub | PyPI | Awesome

GitHub Stars: 44,077 | GitHub Forks:

Django je svobodný open-source full-stack framework pro Python. Snaží se obsahovat všechny potřebné funkce ve výchozím nastavení, místo aby je nabízel jako samostatné knihovny.

Mezi příkladné funkce Djanga patří ověřování, směrování URL, šablonovací stroj, objektově-relační mapovač (ORM) a migrace databázových schémat (Django v.1.7+).

Tyto funkce činí Django vysoce škálovatelným, směšně rychlým a extrémně všestranným.

Django používá svůj ORM k mapování objektů na tabulky databáze. Stejný kód funguje s různými databázemi a není obtížné jej přenést z jedné databáze do druhé. Hlavní databáze, se kterými Django pracuje, jsou PostgreSQL, MySQL, SQLite a Oracle, ale ovladače třetích stran umožňují používat i jiné.

S Django můžete vytvořit jakoukoli webovou aplikaci od malých projektů až po složité webové stránky. Díky své flexibilitě se Django používá také pro tvorbu MVP, což umožňuje začínajícím firmám optimalizovat čas a rozpočet.

Očekává se, že uživatelská základna Djanga poroste, protože mnoho vývojářů považuje tento framework za nejlepší volbu pro nové technologie, jako je strojové učení. V roce 2020 také komunita Django plánuje vydat další knihovny, aby uspokojila rostoucí poptávku.

Ve společnosti SteelKiwi používáme Django jako primární framework pro vývoj backendu. Pokud se chcete podívat na úžasné aplikace, které jsme s Django již vyvinuli, navštivte naši stránku s projekty.

Pyramid

Oficiální webové stránky | GitHub | PyPI | Awesome

GitHub Stars: 3 215 | GitHub Forks:

Pyramid je open-source – a druhý pozoruhodný – framework pro webové aplikace založený na jazyce Python: 866

Pyramid je open-source – a druhý pozoruhodný – framework pro webové aplikace založený na jazyce Python. Jeho cílem je udělat co nejvíce s minimální složitostí. Pyramid běží na Pythonu 3 a drží krok s technologickými vylepšeními. Aktuální verze frameworku je Pyramid 1.10 a jedná se o desátou aktualizaci od roku 2010.

Nejvýraznější vlastností Pyramidu je jeho schopnost dobře pracovat s malými i velkými aplikacemi. Mezi skvělé vlastnosti Pyramidu patří např:

  • Aplikace pro jeden soubor
  • Generování URL
  • Rozšiřitelná konfigurace
  • Všeobjímající šablony a specifikace prostředků
  • Pružné ověřování a autorizace
  • Testování, podpora, a komplexní dokumentace dat
  • Predikáty zobrazení a mnoho pohledů na trasu
  • Dekorátory funkcí
  • Predikáty
  • Renderery

S Pyramidou se může vývojář rozhodnout pro šablonovací jazyk, generovací knihovny a databázovou vrstvu.

Komunita Pyramid je aktivní a může se pochlubit mnoha vydáními. Vývojáři mohou sledovat vývoj frameworku připojením k oficiálnímu IRC kanálu nebo do skupin na Googlu a Twitteru.

TurboGears

Oficiální webové stránky | GitHub | PyPI

Hvězdy na GitHubu: 654 | Forky na GitHubu:

TurboGears je open-source, datově řízený full-stack framework pro webové aplikace. Je postaven na spoustě middlewaru a mnoha knihovnách a původně byl vytvořen tak, aby kombinoval nejlepší komponenty jiných frameworků Python.

TurboGears umožňuje rychle vyvíjet rozšiřitelné webové aplikace řízené daty. Je vybaven uživatelsky přívětivým šablonovacím enginem a výkonným a flexibilním ORM. Kromě skvělých šablonovacích systémů, které návrhářům usnadňují život, nabízí TurboGears velkou flexibilitu, silnou podporu agregátů, výkonné ORM a opakovaně použitelné fragmenty.

Mezi charakteristické vlastnosti TurboGears patří např:

  • Podpora více databází
  • Architektura ve stylu MVC
  • Podpora SQLObject a SQLAlchemy
  • Kid a Genshi zahrnuté v preferovaných šablonovacích jazycích
  • Validace pomocí FormEncode
  • Pylons jako webový server
  • ToscaWidgets, aplikační knihovna, která zjednodušuje koordinaci návrhu frontendu a vývoje serveru
  • Šablony PasteScript
  • Front-facing servery založené na WSGI (Paste HTTP server, CherryPy WSGI/HTTP server atd.)
  • Nástroje příkazového řádku
  • Integrace knihovny MochiKit JavaScript
  • Všechny funkce jsou implementovány jako dekorátory funkcí

Co se týče budoucnosti TurboGears, komunita v současné době pracuje na vylepšování možností frameworku a jeho celkové stability a chystá se vydat „minimální kód“. Tento kód se také označuje jako microframework nebo ořezaná verze TurboGears. Minimální kód pomůže vývojářům vytvářet aplikace rychleji, čímž ušetří peníze i čas.

Web2py

Oficiální webové stránky | GitHub | PyPI

Hvězdičky na GitHubu: 1 794 | Forky na GitHubu:

Web2py je škálovatelný open-source full-stack framework pro Python. Je velmi výkonný, pokud jde o zpracování dat. Web2py byl původně nabízen jako výukový nástroj se zaměřením na snadné použití. To vysvětluje, proč neexistují žádné konfigurační soubory na úrovni projektu.

Na Web2py je však skvělé, že se dodává s vlastním webovým IDE, které mimo jiné obsahuje editor kódu, debugger a možnost nasazení jedním kliknutím.

Mezi další cenné vlastnosti Web2py patří:

  • Žádné požadavky na instalaci a konfiguraci
  • Možnost provozu v systémech Windows, Mac, Linux/Unix, Google App Engine, Amazon EC2 a na jakémkoli webhostingu, který podporuje buď Python 2.5-2.7 nebo Java+Python
  • Schopnost číst více protokolů
  • Zabezpečení dat, které zabraňuje takovým zranitelnostem, jako je cross-site scripting, chyby ve vstřikování a škodlivé spouštění souborů
  • Úspěšné využití postupů softwarového inženýrství, díky kterým je kód snadno čitelný a udržovatelný
  • Sledování chyb, důkladné protokolování chyb a ticketing
  • Řízení přístupu na základě rolí
  • Podpora internacionalizace
  • Zpětná kompatibilita, která zajišťuje uživatelsky orientovaný vývoj bez nutnosti ztráty vazeb na dřívější verze

Systém ticketingu je hlavní vlastností Web2py; vydává tikety, kdykoli dojde k chybě. Uživatelé tak mohou sledovat chyby a jejich stavy.

Přes všechny tyto výhody je komunita Web2py menší než komunita Pyramidu nebo Djanga. Nepoužívá ji mnoho vývojářů. To znamená, že šance na získání podpory jsou nižší. Navíc oficiální poštovní konference není příliš aktivní.

Mikroframeworky

Mikroframeworku neboli minimalistickému frameworku pro webové aplikace chybí většina funkcí plnohodnotného frameworku, například engine webových šablon, funkce ověřování, účty, autorizace, validace vstupů a sanitace vstupů. Mikroframework se snaží poskytnout pouze sadu komponent potřebnou k vytvoření aplikace. Může se také zaměřit na poskytování potřebných funkcí pro jednu konkrétní oblast.

Flask

Oficiální webové stránky | GitHub | PyPI | Awesome

Github Hvězdičky: 46 475 | GitHub Forky:

Flask je framework pro Python dostupný pod licencí BSD. Byl inspirován Ruby frameworkem Sinatra. Flask závisí na sadě nástrojů Werkzeug WSGI a šabloně Jinja2.

Hlavní myšlenkou Flasku je pomoci vybudovat pevný základ webové aplikace. Odtud můžete používat libovolná rozšíření, která budete potřebovat. Flask je vhodný pro všechny projekty. Ve skutečnosti je to výchozí volba pro jakýkoli webový projekt, který se nehodí pro Django.

Flask je díky své lehké a modulární konstrukci snadno přizpůsobitelný potřebám vývojářů. Obsahuje řadu užitečných out-of-the-box funkcí:

  • Vestavěný vývojový server a rychlý debugger
  • Integrovaná podpora pro unit testing
  • RESTful request dispatching
  • Šablonování Jinja2
  • Podpora cookies (relace na straně klienta)
  • WSGI 1.0 compliance
  • Unicode-based
  • Možnost zapojení libovolného ORM
  • HTTP request handling

Od svého uvedení v roce 2010 byl Flask 27krát aktualizován. K dnešnímu dni zůstává nejlépe rostoucím frameworkem Pythonu. Mnoho rozšíření Flask však již není podporováno: dokumentace je zastaralá a již se nevyvíjí. Pokud na to narazíte, budete si muset vygooglit aktivně podporovaný doplněk s podobnou funkčností.

Bottle

Oficiální webové stránky | GitHub | PyPI

GitHub Stars: 6 348 | GitHub Forks: 1,245

Bottle je mikroframework. Původně byl určen pro vytváření API, Bottle implementuje vše v jediném zdrojovém souboru. Nemá žádné závislosti kromě standardní knihovny Pythonu. Při kódování s Bottle se dostanete blíže ke kovu než při kódování s jakýmkoli full-stack frameworkem. Bottle se však hodí pouze v případě, že vytváříte velmi malou aplikaci s maximálně 500 řádky kódu a bez zvláštních požadavků.

Mezi jeho výchozí funkce patří směrování, šablonování, nástroje a základní abstrakce nad standardem WSGI.

  • Směrování – podporuje mapování požadavků na volání funkcí, což umožňuje dosáhnout čistých a dynamických adres URL
  • Šablony – rychlý a pythonovský šablonovací engine již z výroby spolu s plnou podporou mako, jinja2 a cheetah
  • Nástroje – pohodlný přístup k formulářovým datům, nahrávání souborů, cookies, hlavičkám, a dalším metadatům souvisejícím s HTTP
  • Server – vestavěný vývojový server HTTP, který podporuje fapws3, bjoern, GAE, СherryPy a jakýkoli jiný server HTTP podporující WSGI

Od roku 2009 byl Bottle 73krát aktualizován a nyní je ideálním řešením pro tvorbu prototypů, učení se organizaci webových frameworků a vytváření jednoduchých osobních aplikací.

Jakékoli příspěvky komunitě Bottle přijímáme prostřednictvím služby GitHub. Uživatelé se také mohou připojit k poštovnímu seznamu a blogu Bottle a sledovat nejnovější změny na Twitteru. Pokud hledáte další diskusní fórum, připojte se k chatu na freenode.

CherryPy

Oficiální webové stránky | GitHub | PyPI

Hvězdičky na GitHubu: 1 057 | Forky na GitHubu: 259

CherryPy je minimalistický webový framework s otevřeným zdrojovým kódem. Díky němu se vytváření webových aplikací v jazyce Python neliší od vytváření jakéhokoli jiného objektově orientovaného programu.

CherryPy je vytvořen tak, aby byl rozšiřitelný. Framework dokonce nabízí mechanismy pro háčky a rozšíření. například webová aplikace poháněná CherryPy je samostatná aplikace v jazyce Python, která obsahuje vlastní vícevláknový webový server. Díky vlastnímu webovému serveru zahrnují body rozšíření funkce mimo cyklus požadavek-odpověď, čímž zvyšují úroveň rozšiřitelnosti CherryPy.

Ve skutečnosti je webová aplikace poháněná CherryPy samostatná aplikace Pythonu, která vkládá vlastní vícevláknový webový server. Aplikace CherryPy lze spustit v libovolném operačním systému, který podporuje Python (Windows, macOS, Linux atd.). Lze je nasadit kdekoli, kde lze spustit běžnou aplikaci Python. Pro aplikace CherryPy nepotřebujete Apache, ale aplikaci CherryPy můžete spustit za Apache stejně dobře jako za Lighttpd nebo IIS.

CherryPy není příliš omezující framework, protože umožňuje použít jakýkoli typ technologie pro šablonování, přístup k datům atd. Stále však dokáže zpracovávat relace, statiku, soubory cookie, nahrávání souborů a vše ostatní, co typicky umí webový framework.

Mezi výchozí funkce CherryPy patří:

  • An HTTP/1.1 kompatibilní s WSGI thread-pooled webserverem
  • Jednoduchý běh více HTTP serverů najednou
  • Výkonný konfigurační systém
  • Flexibilní systém zásuvných modulů
  • Výstupní nástroje pro ukládání do mezipaměti, kódování, relace, ověřování, statický obsah atd.
  • Vestavěná podpora profilování, pokrytí a testování
  • Možnost běhu v Pythonu 2.7+, Python 3.1+, PyPy, Jython a Android

Přes všechny funkce a výhody má mnoho vývojářů pocit, že dokumentace CherryPy by potřebovala vylepšit. Navíc by CherryPy mohlo být alespoň trochu jednodušší na používání

Stejně jako většina ostatních frameworků má i CherryPy za sebou komunitu, která poskytuje pomoc začínajícím i pokročilým vývojářům. CherryPy má e-mailovou konferenci a navrhuje vývojářům, aby se připojili k IRC kanálu frameworku nebo skupinám Gitter a Google.

Falcon

Oficiální webové stránky | GitHub | PyPI

Hvězdičky na GitHubu: 1 057 | Forky na GitHubu: 259

Falcon je holý framework pro webové rozhraní API v jazyce Python pro vytváření velmi rychlých aplikačních backendů. Logem frameworku je sokol, který symbolizuje, jak rychle Falcon pracuje.

Tento framework umožňuje vývojářům vytvářet čistší návrhy a zvládá většinu požadavků. Falcon nikdy neomezuje vývojáře ve výběru knihoven pro databáze a autorizaci.

Další cenné funkce Falconu:

  • 100% pokrytí kódu pomocí rozsáhlé sady testů
  • Vysoce optimalizovaná základna kódu
  • Přední zpracování výjimek
  • REST-.inspirované třídami zdrojů
  • Šablony URI pro intuitivní rutiny
  • Snadný přístup prostřednictvím tříd požadavků a odpovědí
  • Snadné zpracování požadavků prostřednictvím middleware komponent
  • Idiomatické chybové odpovědi HTTP
  • Jednotkové testování prostřednictvím pomocníků WSGI

Falcon ignoruje zbytečné operace při vývoji webového rámce. Také poskytuje svobodu volby: vývojáři mohou činit rozhodnutí, která jim pomohou volně ladit a přizpůsobovat implementace.

Další dvě výhody, které stojí za zmínku, jsou dostupnost rozsáhlé dokumentace a aktivní komunita.

Hug

Oficiální webové stránky | GitHub | PyPI

GitHub Stars: 5 905 | GitHub Forks:

Hug je framework pro vývoj API v Pythonu 3. Je vytvořen tak, aby umožnil softwarovým inženýrům jednou vyvinout rozhraní API a pak ho znovu použít, kdykoli je potřeba. Framework Hug zjednodušuje vývoj API tím, že nabízí různá rozhraní. To je hlavní důvod, proč je tento rámec označován za jeden z nejrychlejších v Pythonu 3.

Klíčové vlastnosti frameworku Hug:

  • Podpora automatické dokumentace
  • Ověřování pomocí anotací
  • Vestavěná správa verzí
  • Soulad s Cythonem
  • Může být použit jako knihovna Pythonu

Rámec Hug obsahuje co nejméně integrací a co nejméně kódu, zůstává funkční a poskytuje velký výkon. Navíc se v současné době rozrůstá komunita uživatelů frameworku Hug. To je známkou toho, že je o framework zájem, a důkazem toho, že kdykoli se vyskytne problém, vývojář najde pomoc.

FastAPI

Oficiální webové stránky |GitHub |PyPI

Hvězdičky na GitHubu: 4 835| Forky na GitHubu: 256

FastAPI je moderní framework založený na Pythonu. Původně byl navržen tak, aby se snadno používal pro zajištění co nejlepšího zážitku z vývoje. K dnešnímu dni je FastAPI jedním z nejrychlejších frameworků pro vytváření API v jazyce Python 3.6+.

Framework převzal několik vlastností z Flasku, včetně jeho jednoduchosti. Celý framework je postaven na Starlette a obsahuje většinu jeho funkcí (šablony, WebSockets a podporu GraphQL).

FastAPI framework nabízí:

  • Zvýšení rychlosti vývoje o 200 % až 300 %
  • Snížení chybovosti o 40 %
  • Méně času na ladění
  • Minimalizaci duplikací kódu
  • Automatickou interaktivní dokumentaci

FastAPI není pevně svázán s žádnou databází. Podporuje však databáze, které potřebujete. Díky FastAPI můžete svůj projekt strukturovat tak, jak potřebujete, a dokonce můžete použít většinu stejných souborů z některého ze svých projektů Flask.

Jedinou nevýhodou je jeho malá komunita. Ale to proto, že FastAPI je relativně nový framework.

Asynchronní frameworky

Asynchronní framework je relativně nový typ frameworku pro Python. Jedná se o mikrorámec, který umožňuje vývojářům zpracovávat velkou sadu souběžných spojení. Asynchronní rámce používají neblokující sokety a využívají knihovnu asyncio jazyka Python.

Sanic

Oficiální webové stránky | GitHub | PyPI

Hvězdičky na GitHubu: 12 780 | Forky na GitHubu:

Sanic je webový framework pro Python postavený na uvloop a vytvořený speciálně pro rychlé HTTP odpovědi pomocí asynchronního zpracování požadavků.

Běží na Pythonu 3.5+. Sanic podporuje asynchronní obsluhy požadavků, díky čemuž je kompatibilní s funkcemi async/await jazyka Python 3.5. To zvyšuje jeho rychlost a nabízí neblokující možnosti.

Sonic je považován za preferovaný asynchronní framework ve světě Pythonu díky směrování, middlewaru, cookies, verzování, statickým souborům, blueprintům, pohledům založeným na třídách a socketům. Nenabízí však podporu databází a šablonování.

V porovnávacím testu s jedním procesem a 100 spojeními dokázal Sanic zpracovat 33 342 požadavků za sekundu s průměrnou latencí 2,96 ms.

Tornado

Oficiální webové stránky | GitHub | PyPI

GitHub Stars: 18 292 | GitHub Forks: Tornádo je webový framework a asynchronní síťová knihovna pro Python, která se zaměřuje na rychlost a schopnost zpracovávat velké objemy provozu. Používá neblokující síťový I/O a řeší problém C10k (což znamená, že při správné konfiguraci zvládne více než 10 000 souběžných připojení).

To z něj dělá skvělý nástroj pro vytváření aplikací vyžadujících vysoký výkon a desítky tisíc souběžných uživatelů.

Hlavními funkcemi nástroje Tornádo jsou:

  • Vestavěná podpora ověřování uživatelů
  • Služby v reálném čase
  • Vysoký výkon
  • Šablonovací webový jazyk založený na Pythonu
  • Neblokující klient HTTP
  • Implementace ověřovacích a autorizačních schémat třetích stran (Google OpenID/OAuth, Facebook Login, Yahoo BBAuth, FriendFeed OpenID/OAuth, Twitter OAuth)
  • Podpora překladu a lokalizace

Podle popularity stojí Tornado někde mezi Django a Flask. Řekněme, že chcete něco napsat ve Flasku nebo Djangu kvůli jejich funkcím a nástrojům, ale zároveň potřebujete mnohem vyšší výkon. V takovém případě byste měli zvolit Tornado.

Ostatní

Dash

Oficiální web | GitHub | PyPI | Awesome

GitHub Stars: 9 856 | GitHub Forks: 1,011

Dash je open-source framework pro Python používaný k vytváření analytických webových aplikací. Je vhodný zejména pro datové vědce v Pythonu, kteří nejsou příliš obeznámeni s vývojem webových aplikací.

Dash má dvě základní výhody:

  • umožňuje vytvářet vysoce interaktivní aplikace pouze pomocí kódu Pythonu.
  • Usnadňuje využití síly nástrojů Pythonu pro manipulaci s daty.

Aplikace Dash jsou webové servery, na kterých běží Flask a které komunikují pomocí paketů JSON přes požadavky HTTP. Jejich frontend vykresluje komponenty pomocí React.js.

Aplikace vytvořené pomocí Dash se vykreslují ve webovém prohlížeči a lze je nasadit na servery. To také znamená, že aplikace Dash jsou ze své podstaty multiplatformní a připravené pro mobilní zařízení.

Vývojáři Dash mají přístup k základní instanci Flask a všem jejím konfigurovatelným vlastnostem. K rozšíření možností aplikací Dash mohou vývojáři využít také bohatou sadu zásuvných modulů Flask Plugins.

Výběr webového frameworku Python

K vývoji úspěšného projektu může stačit jen správný framework. Pevně doufáme, že jste v tomto článku našli zajímavý framework. Pokud máte zájem prozkoumat další možnosti, máme pro vás i další, 17 nejlepších webových frameworků Python roku 2017.

Budeme rádi, když navštívíte naši firemní stránku GitHub. Naši vývojáři SteelKiwi se usilovně snaží o inovace ve světě technologií, a čím více lidí se zapojí, tím lépe.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.