Programovanie

8 skvelých malých webových rámcov Pythonu

Pohodlie a všestrannosť Pythonu znamená, že sa používa na vytváranie softvéru takmer v každej oblasti života IT. Jedným z hlavných výklenkov sú webové služby, kde rýchlosť vývoja Pythonu a flexibilné metafory uľahčujú rýchle uvedenie a prevádzku webových stránok.

A ako asi tušíte, Python vám ponúka veľa možností a voľnosť vo webových rámcoch, malých aj veľkých. Nie každý webový projekt musí byť koniec koncov podnikový. Väčšina by mala byť len taká veľká, aby prácu zvládla, a nie väčšia. Tento článok skúma osem najznámejších rámcov Pythonu, ktoré kladú dôraz na jednoduchosť, ľahkú dodávku a úzke zameranie.

Fľaša

Fľaša by sa dala považovať za akýsi miništýl, pretože je ešte kompaktnejšia a stručnejšia ako iná „mikrorámca“. Vďaka svojej minimálnej stope je Bottle ideálny na začlenenie do iných projektov alebo na rýchle dodanie malých projektov, ako sú REST API. (O banke sa hovorí nižšie.)

Celá základňa kódov pre Bottle sa zmestí do jedného súboru a nemá absolútne žiadne externé závislosti. Aj napriek tomu je Bottle vybavený dostatkom funkcií na vytváranie bežných druhov webových aplikácií bez toho, aby sa spoliehal na pomoc zvonku.

Smerovací systém v Bottle, ktorý mapuje adresy URL na funkcie, má takmer úplne rovnakú syntax ako Flask. Nie ste obmedzený iba na pevne zapojené cesty; môžete ich vytvárať dynamicky. K dátam požiadaviek a odpovedí, cookies, premenným dotazu, údajom formulárov z akcie POST, hlavičkám HTTP a nahrávaniu súborov je možné pristupovať a manipulovať s nimi pomocou objektov v Bottle.

Každá funkcia bola implementovaná s dôrazom na detail. Napríklad pri nahrávaní súborov nemusíte súbor premenovať, ak sa jeho konvencia pomenovania zrazí s cieľovým súborovým systémom (napríklad lomky v názve vo Windows). Fľaša to môže urobiť za vás.

Fľaša obsahuje vlastný jednoduchý šablónový modul HTML. Aj keď je to minimálne, má šablónovaný motor všetko potrebné. Premenné obsiahnuté v šablóne sa predvolene vykresľujú pomocou bezpečného kódu HTML; musíte uviesť, ktoré premenné sa dajú bezpečne reprodukovať doslovne. Ak chcete radšej vymeniť šablónový modul Bottle za iný, napríklad Jinja2, Bottle vám to umožní bez problémov. Preferujem systém jednoduchých šablón dodávaný s Bottle; je rýchly, jeho syntax je nenáročná a umožňuje vám miešať kód a text šablóny bez zbytočných ťažkostí.

Fľaša dokonca podporuje viac koncových serverov. Dodáva sa s vlastným vstavaným miniserverom na rýchle testovanie, ale bude tiež podporovať všeobecné WSGI, širokú škálu serverov HTTP kompatibilných s WSGI a v prípade potreby obyčajný starý CGI.

Fľaša nepotrebuje toľko dokumentácie ako iné rámce, ale dokumenty v žiadnom prípade nie sú skromné. Všetky dôležité veci sa zmestia na jednu (aj keď dlhú) webovú stránku. Okrem toho nájdete kompletnú dokumentáciu pre každé API, príklady nasadenia na rôznych infraštruktúrach, vysvetlenie zabudovaného šablónového jazyka a množstvo bežných receptov.

Rovnako ako v prípade banky Flask, aj tu môžete rozširovať funkčnosť fľaše manuálne alebo prostredníctvom doplnkov. Fľaškové doplnky nie sú ani zďaleka také početné ako Flask’s, existujú však užitočné kúsky, ako napríklad integrácia s rôznymi databázovými vrstvami a základné overenie používateľa. Pre podporu asynchronizácie môže Bottle používať jeden z existujúcich serverových adaptérov, ktoré bežia asynchrónne, napríklad aiohttp / uvloop, ale asynchronizovať / čakať nie je natívne podporované.

Jedným z dôsledkov Bottovho minimalizmu je, že niektoré položky tam jednoducho nie sú. Nie je zahrnuté overenie formulára vrátane funkcií, ako je ochrana CSRF (naprieč požiadavkami na weby). Ak chcete vytvoriť webovú aplikáciu, ktorá podporuje vysoký stupeň interakcie používateľa, musíte si túto podporu pridať sami.

Ďalším problémom spoločnosti Bottle je, že vývoj sa zastavil; posledné bodové vydanie, 0,12, dorazilo v roku 2013. To znamená, že spoločnosť Bottle sa naďalej udržiava a jej vývojové vydania sú naďalej použiteľné na výrobu. Vývojári majú v úmysle dodať nové verzie, ktoré zbavia podpory starších vydaní Pythonu.

CherryPy

CherryPy existuje v tej či onej podobe už takmer 20 rokov, ale nestratil minimalizmus a eleganciu, ktoré ju od začiatku odlišovali.

Cieľom CherryPy, okrem toho, aby obsahoval iba holé bity potrebné na obsluhu webových stránok, je cítiť sa, pokiaľ je to možné, nie ako „webový rámec“, ale ako akýkoľvek iný druh aplikácie v Pythone. Weby ako Hulu a Netflix pri výrobe používali CherryPy, pretože rámec poskytuje veľmi nenápadný základ, na ktorom je možné stavať. CherryPy používa združené vlákna pod kapotou, tým lepšie podporuje viacvláknové serverové adaptéry.

CherryPy vám umožní udržať vašu webovú aplikáciu oddelenú od základnej logiky. Ak chcete namapovať funkcie vašej aplikácie na adresy URL alebo trasy poskytované serverom CherryPy, vytvoríte triedu, v ktorej sa obory názvov objektov mapujú priamo na adresy URL, ktoré chcete zobrazovať. Napríklad koreň webovej stránky poskytuje funkcia s názvom „index“. Parametre odovzdané týmto funkciám sa používajú na spracovanie premenných poskytovaných metódami GET alebo POST.

Bity, ktoré obsahuje CherryPy, majú slúžiť ako stavebné bloky nízkej úrovne. Identifikátory relácií a spracovanie súborov cookie sú zahrnuté, ale šablóna HTML nie. Rovnako ako Bottle, aj CherryPy ponúka spôsob mapovania trás do adresárov na disku pre poskytovanie statických súborov.

CherryPy sa často odloží od existujúcej knižnice tretej strany, aby funkciu skôr podporovala, než aby ju poskytovala natívne. Napríklad aplikácie WebSocket nie sú podporované programom CherryPy priamo, ale prostredníctvom knižnice ws4py.

Dokumentácia k aplikácii CherryPy obsahuje praktický návod, ktorý vás prevedie rôznymi aspektmi programu. Na rozdiel od niektorých iných rámcových tutoriálov vás neprevedie kompletnou end-to-end aplikáciou, ale je to stále užitočné. Dokumenty prichádzajú s praktickými poznámkami o nasadení vo virtuálnych hostiteľoch, reverznom proxy serveroch cez Apache a Nginx a mnohých ďalších scenároch.

Sokol

Ak budujete API založené na REST a nič iné, Falcon bol vyrobený práve pre vás. Štíhly a rýchly, s takmer žiadnymi závislosťami nad rámec štandardnej knižnice, Falcon poskytuje všetko, čo potrebujete pre REST API, a nič viac. Falcon 2.0, uvedený na trh v roku 2019, nepodporuje podporu Pythonu 2.x a vyžaduje minimálne Python 3.5.

Veľká časť toho, prečo spoločnosť Falcon získava štítok „ľahký a štíhly“, nemá veľa spoločného s počtom riadkov kódu v rámci. Je to preto, že Falcon neukladá aplikáciám takmer žiadnu vlastnú štruktúru. Všetko, čo musí aplikácia Falcon urobiť, je označiť, ktoré funkcie sa mapujú na ktoré koncové body API. Vrátenie súboru JSON z koncového bodu si vyžaduje niečo viac ako nastavenie trasy a vrátenie údajov prostredníctvom servera json.dumps funkcia zo štandardnej knižnice Pythonu. Podpora pre asynchronizáciu vo Falcone ešte nepristála, ale prebiehajú práce na tom, aby sa to vo Falcone 3.0 stalo.

Spoločnosť Falcon tiež používa rozumné predvolené nastavenia, takže na nastavenie je potrebné len málo drotovania. Napríklad 404 sa predvolene zvyšuje pre každú trasu, ktorá nie je výslovne deklarovaná. Ak chcete klientovi vrátiť chyby, môžete získať jednu z mnohých výnimiek z akcií dodávaných s rámcom (ako napr. HTTPBadRequest) alebo použite generikum falcon.HTTPError výnimkou. Ak potrebujete predspracovanie alebo dodatočné spracovanie trasy, Falcon poskytuje háčiky aj pre tie.

Zameranie spoločnosti Falcon na API znamená, že je tu málo pre vývoj webových aplikácií s konvenčnými používateľskými rozhraniami HTML. Napríklad v podobe funkcií spracovania formulárov a ochranných nástrojov CSRF veľa neočakávajte. To znamená, že Falcon ponúka elegantné možnosti rozšírenia svojej funkcionality, takže je možné vytvárať sofistikovanejšie položky. Okrem vyššie uvedeného mechanizmu pripájania nájdete rozhranie pre vytváranie middleware, ktoré možno použiť na zabalenie všetkých rozhraní API spoločnosti Falcon.

Dokumentácia pre Falcon je štíhla v porovnaní s inými rámcami, ale len preto, že toho treba pokryť menej. Používateľská príručka obsahuje formálny podrobný sprievodca všetkými hlavnými funkciami spolu s časťou pre rýchly štart, ktorá vám umožní zobraziť ukážkový kód s anotáciou alebo bez nej.

FastAPI

Názov FastAPI je dobrým zhrnutím toho, čo robí. Je navrhnutý tak, aby rýchlo vytvoril koncové body API, a tiež beží rýchlo.

FastAPI využíva projekt Starlette pre svoje vysokorýchlostné sieťové jadro, ale na to, aby ste mohli FastAPI používať, nemusíte vedieť o interných aspektoch Starlette. Koncové body definujete rovnakým spôsobom ako aplikáciu Flask alebo Bottle - pomocou dekorátorov označte, ktoré funkcie zvládnu jednotlivé trasy - a potom vrátite slovníky, ktoré sa automaticky preložia do formátu JSON.

Spôsob vrátenia vecí môžete ľahko prepísať. Napríklad, ak chcete vrátiť HTML / XML z niektorých koncových bodov, môžete to urobiť jednoduchým vrátením vlastného Odozva objekt. Ak chcete pridať vlastný middleware, môžete otvoriť všetko, čo vyhovuje štandardu ASGI.

FastAPI využíva naznačovanie typov Pythonu na zabezpečenie obmedzení druhov dát, ktoré trasy akceptujú. Napríklad, ak máte trasu s týmto typom Voliteľné [int], FastAPI odmietne všetky príspevky okrem celých čísel. K svojim koncovým bodom nemusíte pridávať overovací kód údajov; stačí použiť tipy na typ a nechať prácu vykonať FastAPI.

Prirodzene, niektoré veci sú vynechané. Napríklad neexistuje žiadny natívny engine šablón HTML, ale nie je nedostatok riešení tretích strán, ktoré by vyplnili túto medzeru. To isté platí aj pre pripojenie k databáze, ale dokumentácia obsahuje podrobnosti o tom, ako priviesť určité ORM (napr. Peewee) k spolupráci s asynchrónnym správaním FastAPI.

Banka

Mnoho diskusií o webových rámcoch Pythonu začína práve Flask, a to z dobrého dôvodu. Banka je dobre zavedený, dobre pochopený rámec, ktorý sa ľahko používa a je stabilný. Je nemožné pokaziť sa pomocou Flask pre ľahký webový projekt alebo základné REST API, ale ak sa pokúsite postaviť niečo väčšie, čaká vás ťažké zdvíhanie.

Centrálnym lákadlom banky je nízka prekážka vstupu. Základnú aplikáciu „ahoj svet“ je možné nastaviť na menej ako 10 riadkoch jazyka Python. Flask obsahuje široko používaný systém šablón HTML Jinja2, ktorý uľahčuje vykreslenie textu, ale Jinja2 je možné vymeniť za ľubovoľný počet ďalších šablónových nástrojov (napríklad Mustache) alebo si môžete vytvoriť vlastný.

V mene jednoduchosti Flask vynecháva prvky, ako je dátová vrstva alebo ORM, a neponúka žiadne ustanovenia, ako je napríklad overovanie formulárov. Flask je však možné rozšíriť prostredníctvom rozšírení, ktorých sú tu desiatky a pokrývajú mnoho bežných prípadov použitia, ako napríklad ukladanie do pamäte cache, spracovanie a overovanie formulárov a pripojenie k databáze. Tento štíhly štandardný dizajn vám umožňuje začať navrhovať aplikáciu Flask s absolútnym minimom funkčnosti a potom podľa potreby vrstviť iba časti, ktoré potrebujete.

Dokumentácia k banke je geniálna a ľahko sa číta. Dokument rýchleho spustenia urobí skvelú prácu, ako začať, a zároveň vysvetlí význam predvolených možností pre jednoduchú aplikáciu Flask a dokumenty API sú plné dobrých príkladov. Vynikajúca je tiež zbierka úryvkov Flash, ktoré sú rýchlymi a špinavými príkladmi toho, ako vykonať konkrétne úlohy, napríklad ako vrátiť objekt, ak existuje, alebo chyba 404, ak nie.

Spoločnosť Flask dosiahla svoj míľnik verzie 1.0 v roku 2018, pričom minimálne podporované verzie boli Python 2.6 a Python 3.3, a mnoho z jej chovaní sa nakoniec stalo kameňom. Flask výslovne nepodporuje asynchronnú syntax Pythonu, ale na uspokojenie tohto dopytu bola odštiepená variácia Flask kompatibilná s API, ktorá sa volá Quart.

Pyramída

Malá a ľahká pyramída je vhodná na úlohy, ako je vystavenie existujúceho kódu Pythonu ako REST API alebo poskytnutie jadra webového projektu, pri ktorom vývojár robí väčšinu ťažkých úloh.

„Pyramída vám umožní rýchlo dosiahnuť produktivitu a bude rásť s vami,“ uvádza sa v dokumentácii. „Nebude vás brzdiť, keď je vaša aplikácia malá, a nebude vám stáť v ceste, keď sa vaša prihláška zväčší.“

Dobrý spôsob, ako opísať Pyramidov minimalizmus, by bol „bez politiky“, čo je termín používaný v časti dokumentácie, ktorá pojednáva o tom, ako sa pyramída stavia proti iným webovým rámcom. „V zásade„ bez zásad “znamená, že to, ktorú databázu alebo aký šablónový jazyk sa rozhodnete použiť, sa Pyramid netýka.

Na zostavenie základnej aplikácie Pyramid je potrebných veľmi málo práce. Rovnako ako v prípade Bottle and Flask, aj aplikácia Pyramid môže pozostávať z jedného súboru Pythonu, okrem súborov pre samotný rámec. Jednoduché jednosmerné rozhranie API nevyžaduje viac ako tucet riadkov kódu. Väčšina z toho je varná platňa z ... importu vyhlásenie a nastavenie servera WSGI.

V predvolenom nastavení obsahuje Pyramid niekoľko položiek, ktoré sú bežné vo webových aplikáciách, ale sú poskytované ako komponenty, ktoré sa majú spojiť, a nie ako plnohodnotné riešenia. Napríklad podpora relácií používateľov prichádza dokonca s ochranou CSRF. Podpora používateľských účtov, napríklad prihlásenie alebo správa účtov, však nie je súčasťou dohody. Budete si ho musieť sami pretočiť alebo pridať pomocou doplnku. To isté platí pre spracovanie formulárov a pripojenie k databáze.

Pyramid dokonca poskytuje spôsob, ako vytvoriť šablóny z predchádzajúcich projektov Pyramid na opätovné použitie predchádzajúcej práce. Tieto šablóny, nazývané „lešenia“, generujú aplikáciu Pyramid s jednoduchým smerovaním a niekoľkými začiatočnými šablónami HTML / CSS. Dodávané lešenia zahŕňajú ukážkový štartovací projekt a projekt, ktorý sa pripája k databázam prostredníctvom populárnej knižnice Python SQLAlchemy.

$config[zx-auto] not found$config[zx-overlay] not found