Programování

5 velkých a výkonných webových rámců Pythonu

Když vytvoříte back-end pro web nebo službu, i když se na první pohled zdá skromná, můžete rychle zjistit, že to není všechno. Dokonce i „jednoduchý“ web se ukáže jako úl složitosti. Správa uživatelů, návrh dat, odesílání formulářů, zabezpečení - provádění všeho ručně bude zdlouhavé.

Pokud u těchto velkých webových projektů víte, že budete potřebovat všechno plus kuchyňský dřez, je nejlepší obrátit se na rámec, který je dodáván s bateriemi (a nabíječkami). Zde je pět těžkých webových frameworků pro Python, které přicházejí se vším, co potřebujete k vytváření robustních webových aplikací, a pak s některými.

CubicWeb

CubicWeb je označován jako „sémantický rámec webových aplikací, který upřednostňuje opětovné použití a objektově orientovaný design.“ Jedná se o zajímavý systém - jak poznamenal Rick Grehan, když jej recenzoval již v roce 2011 - který zdůrazňuje použití abstrakcí a opakovaně použitelných stavebních bloků kódu zvaných „kostky“. Ve skutečnosti může být CubicWeb pro některé vývojáře příliš abstraktní nebo idiosynkratický a jeho rychlost vývoje a sada funkcí zaostávají za jinými rámci.

Kostky jsou softwarové komponenty, které obsahují schéma (datový model), entity (logika programování) a pohledy. Sestavením více kostek, z nichž každá plní svůj vlastní úkol, můžete vytvářet softwarové aplikace opětovným použitím vlastního kódu a kódu ostatních.

Ve své podstatě poskytuje CubicWeb základní lešení používané každou webovou aplikací: „úložiště“ pro datová připojení a úložiště; „webový stroj“ pro základní požadavky / odpovědi HTTP a akce CRUD; a schéma pro modelování dat. To vše je popsáno v definicích tříd Pythonu.

Chcete-li nastavit a spravovat instance CubicWeb, pracujete s nástrojem příkazového řádku podobným nástroji použitému pro Django. Integrovaný systém šablon umožňuje programově generovat výstup HTML. Můžete také použít krychli, která poskytuje nástroje pro webové uživatelské rozhraní, například pro rámec Bootstrap HTML.

Ačkoli CubicWeb podporuje Python 3 (od verze 3.23), nezdá se, že by používal nativní asynchronní funkce Pythonu 3. Kruhový objezd způsob, jak zahrnout async, by bylo použít modul cubicweb.pyramid k použití rámce Pyramid jako webového serveru a čerpat z vidlice Pyramid, která používá asynchronní konstrukce. Je také možné provádět úkoly asynchronně s krychlí kubického webu. Zdá se však, že prozatím je něco přímějšího mimo dosah.

Chcete-li načíst nebo manipulovat s perzistentními daty v aplikaci CubicWeb, použijete Relation Query Language (RQL), který používá neurčitě syntaxi podobnou SQL, ale má vzor podle SparQL W3C. Důvodem pro CubicWeb je opět abstrakce: RQL poskytuje vysoce oddělenou cestu pro vzájemné propojení různých zdrojů dat.

Protože CubicWeb má mnoho závislostí, je nejlepší použít pip install načíst je všechny. Možná budete muset provést určité manuální vyladění v místním prostředí. To je na rozdíl od jiných rámců, kde běží pip install nebo je nutné vložit kód rámce do podsložky jiného projektu. Nebo můžete použít Docker kontejner, aby se věci rozběhly.

CubicWeb označuje svou zdlouhavou dokumentaci jako „knihu“. Autoři knihy si našli čas, aby vysvětlili neobvyklý přístup CubicWebu, předvedli, jak sestavit některé základní aplikace, zahrnout odkazy na API, a obecně se snaží být konkrétní.

CubicWeb zůstává pod aktivním, i když pomalým vývojem. Plány pro CubicWeb 4.0 byly od roku 2012 svazovány, ale pro jejich realizaci dosud nebyla nabídnuta žádná časová osa.

Django

V desetiletí a změnách od doby, kdy se Django poprvé objevil, se stal jedním z nejrozšířenějších rámců Pythonu pro vytváření webových aplikací. Django přichází s většinou každé baterie, kterou možná budete potřebovat, takže je vhodnější pro vytváření velkých aplikací než malých.

Django strávil mnoho let seděním ve verzi 1.x. Když Django 2.0 dorazilo koncem roku 2017, upustilo od kompatibility s Pythonem 2 ve prospěch Pythonu 3.4 a novějšího. Django 3.0, vydané v prosinci 2019, vyžaduje Python 3.6 nebo lepší a přidává podporu pro nový asynchronní standard ASGI pro webové aplikace Pythonu.

Klíčovou součástí přitažlivosti Djanga je rychlost nasazení. Protože Django obsahuje tolik částí, které potřebujete pro vývoj průměrné webové aplikace, můžete se rychle pohybovat. Směrování, analýza URL, připojení k databázi včetně ORM (objektově-relační mapovač), ověřování formulářů, ochrana před útoky a šablonování jsou vše vestavěné.

Najdete stavební kameny pro nejběžnější scénáře webových aplikací. Například správu uživatelů najdete na většině webových stránek, takže ji Django nabízí jako standardní prvek. Místo toho, abyste museli vytvářet svůj vlastní systém pro sledování uživatelských účtů, relací, hesel, přihlášení / odhlášení, oprávnění správce atd., Django tyto funkce poskytuje nativně. Mohou být použity tak, jak jsou, nebo rozšířeny tak, aby zahrnovaly nové případy použití s ​​minimální prací.

Django má rozumná a bezpečná výchozí nastavení, která pomáhají chránit vaši webovou aplikaci před útokem. Když umístíte proměnnou do šablony stránky, například řetězec s HTML nebo JavaScriptem, obsah se nevykreslí doslovně, pokud výslovně neoznačíte instanci proměnné jako bezpečnou. To samo o sobě eliminuje mnoho běžných problémů se skriptováním mezi weby. Pokud chcete provést ověření formuláře, můžete použít vše od jednoduché ochrany CSRF až po plnohodnotné mechanismy ověření jednotlivých polí, které vracejí podrobnou zpětnou vazbu o chybách.

Sada funkcí, která je stejně bohatá a široká jako Django, by nebyla dobrá, kdyby k ní nebyla k dispozici robustní dokumentace. Dokumentace Django přechází do všech aspektů rámce z různých úhlů. Práce s Pythonem 3 nebo jinými příchutěmi jazyka, správné zabezpečení, implementace běžných komponent webových aplikací (jako jsou relace nebo stránkování), generování souborů Sitemap - vše je zahrnuto. Podrobně jsou popsány také API pro každou vrstvu aplikace - model, pohled a šablonu.

S velkou silou však přichází velká složitost. Aplikace Django mají pověst špičkových a plných mnoha pohyblivých částí. I jednoduchá aplikace Django vyžaduje pro spuštění slušné množství konfigurace. Pokud je vaším cílem udělat něco víc než nastavit pár jednoduchých koncových bodů REST, je Django téměř jistě přehnané.

Django má také své zvláštnosti. Šablony stránek například nemohou používat výzvy. Příklad: Můžete přihrát {{user.name}} jako součást šablony, ale ne {{user.get_name ()}}. Je to jeden ze způsobů, jak Django zajišťuje, aby vám šablony nechtěně nezasáhly nohu, ale tato omezení mohou být nepříjemná, pokud na ně nejste připraveni. I když existují řešení, mají tendenci vybírat daň za výkon.

Od verze 3.0 Django přidal podporu pro asynchronní zobrazení. Bohužel zatím neexistuje podpora pro asynchronizaci v jiných částech zásobníku Django, jako je ORM. Ale můžete nasadit Django pomocí ASGI, abyste plně využili asynchronní zobrazení.

Web2py

Ve světě programování Ruby je Ruby on Rails de facto webový rámec. Profesor počítačové vědy na univerzitě DePaul Massimo Di Pierro se inspiroval Railsem k vytvoření webového rámce v Pythonu, který se podobně snadno nastavuje a používá. Výsledkem je Web2py.

Největším lákadlem Web2py je integrované vývojové prostředí. Když nastavíte instanci Web2py, získáte webové rozhraní, v podstatě online editor aplikací v Pythonu, kde můžete nakonfigurovat komponenty aplikace. To obvykle znamená vytváření modelů, pohledů a řadičů, z nichž každý je popsán pomocí modulů Pythonu nebo šablon HTML. Několik příkladů aplikací je dodáváno s Web2py ihned po vybalení z krabice. Můžete je rozdělit, abyste viděli, jak fungují, nebo je využít jako startovací šablony k vytváření vlastních aplikací.

Vývojáři obvykle nasazují Web2py stažením jeho zdrojového kódu a na něm navazující. Ale pro méně technické uživatele systému Windows nebo MacOS nabízejí tvůrci Web2py verze, které jsou v zásadě samostatnými servery. Stáhněte si, rozbalte a spusťte jednu z těchto verzí a získáte místní webový server s předkonfigurovanou kopií vestavěné Web2py. To je pěkný způsob, jak se postavit na nohy při vytváření aplikace Web2py, kterou lze podle potřeby nasadit jinde.

Webové rozhraní Web2py bylo vytvořeno pomocí Bootstrapu 4, takže je snadné pro oči a snadnou navigaci. Editor v prohlížeči nenahrazuje plnohodnotné IDE, ale je vybaven užitečnými pomůckami, jako je číslování řádků a zvýraznění syntaxe Pythonu (včetně automatického odsazení). Zahrnuto je také rychlé webové rozhraní pro prostředí Python, takže můžete komunikovat s Web2py z příkazového řádku - pěkný ústupek odborníkům.

Systém abstrakce dat používaný ve Web2py funguje trochu odlišně od ORM od Django a dalších ORM inspirovaných tímto systémem (například Peewee). Tyto systémy používají k definování modelů třídy Pythonu, zatímco Web2py používá funkce konstruktoru jako tabulka_definice vytvořit instanci modelů. Rozdíly budou pravděpodobně nepříjemné, pouze pokud jste zvyklí na druhou stranu; neměli by zastrašit nováčky. Pravděpodobně nebudete mít potíže s připojením Web2py k poskytovateli dat, protože mluví téměř se všemi významnými databázemi, které existují.

Skutečně užitečnou funkcí související s databází ve Web2py je schopnost generovat diagram modelů, což vám umožní vizualizovat vzájemný vztah vašich modelů. K povolení této funkce si však budete muset nainstalovat knihovnu PyGraphviz.

Web2py dodává mnoho dalších profesionálních komponent: funkce internacionalizace, více metod ukládání do mezipaměti, řízení přístupu a autorizaci a dokonce i front-endové efekty (například výběr data ve formulářích) prostřednictvím integrované podpory pro jQuery a AJAX. Zahrnuty jsou také háčky pro externí a interní middleware, i když není povoleno používat middleware k nahrazení základních funkcí Web2py. V Web2py však dosud není výslovně používáno asynchronní funkce Pythonu, ačkoli existuje plánovač pro zpracování dlouhotrvajících úkolů.

Není divu, že se dokumentace Web2py označuje jako „kniha“. Nejprve pokrývá ohromující množství materiálu v Web2py, Pythonu a prostředích nasazení použitých pro oba. Zadruhé, je napsán velmi přístupným narativním stylem. Za třetí, hovoří do hloubky o běžných scénářích vytváření aplikací. Celá kapitola je například o používání jQuery k vytváření aplikací AJAX.

Weppy

Weppy se cítí jako značka na půli cesty mezi minimální jednoduchostí Flasku a úplností Djanga. Zatímco vývoj aplikace Weppy má přímočarost Flash, Weppy přichází s mnoha funkcemi v Django, jako jsou datové vrstvy a autentizace. Weppy je tedy vhodný pro aplikace, které se pohybují od extrémně jednoduchých až po mírně sofistikované.

Na první pohled vypadá kód Weppy velmi dobře, jako je Flaskův kód nebo Bottle code. K zprovoznění základního webu s jedinou cestou je potřeba několik pokynů. Trasy lze popsat pomocí dekorátorů funkcí (snadná cesta) nebo programově a syntaxe pro to se blíží Flask / Bottle. Šablona funguje zhruba stejně, kromě menších variací v syntaxi.

Weppy kontrastuje s těmi menšími frameworky tím, že zahrnuje některé funkce, které začleňují pouze jako plug-iny nebo doplňky. Například Flask ani Bottle nemá vestavěný ORM nebo systém pro správu dat. Weppy obsahuje ORM, i když založenou spíše na projektu pyDAL než na mnohem populárnější SQLAlchemy. Weppy dokonce podporuje migraci schémat, které Django podporuje jako součást svého ORM (migrační systém Django je také mnohem automatizovanější). Zatímco Weppy má mechanismus rozšíření, seznam oficiálně schválených doplňků je malý, mnohem menší než katalog rozšíření pro Flask.

Lehčí rámce, jako je Weppy, se často používají k vytváření rozhraní RESTful API a Weppy je pro tento účel vybaven pohodlnými funkcemi. Dát a @servis dekorátor na trase a data, která vracíte, se automaticky formátují podle vašeho výběru JSON nebo XML.

Weppy obsahuje další funkce, které se zdají více v souladu s větším rámcem, ale jsou implementovány bez hromadného zpracování. Mezi příklady patří mechanismy ověření dat, zpracování formulářů, ukládání do mezipaměti odpovědí a ověření uživatele. Ve všech těchto případech přistupuje Weppy k přístupu „jen dost“. Poskytované funkce nejsou tak úplné, jak byste mohli najít v Django a jiných těžkých rámcích, ale vývojář nemusí investovat spoustu práce do toho, aby byly užitečné, a vždy je lze poté rozšířit.

Další funkcí rámce těžké váhy ve Weppy je podpora internacionalizace. Řetězce v šablonách lze přeložit podle souborů národního prostředí poskytovaných s aplikací, což jsou jednoduché slovníky Pythonu. Volbu jazyka lze také nastavit analýzou požadavku prohlížeče (tj. Hlavičkou HTTP Accept-Language) nebo vazbou překladu na konkrétní trasu.

Dokumentace Weppy má stejnou příchuť jako samotný rámec. Je čistý, čitelný a psaný tak, aby ho lidé mohli spotřebovat. Kromě obvyklého příkladu „hello world“ obsahuje pěkný návod, který vám umožní vytvořit systém mikroblogování jako startovací projekt.

Dlouhodobé plány pro Weppy zahrnují podporu async a soketů jako nízkoúrovňových, prvotřídních entit. Vývojáři společnosti Weppy plánují tyto funkce zavést ve verzi 2.0 a poté vyžadovat pro všechny budoucí verze Weppy Python 3.7 nebo lepší.

Zope