Programovanie

5 veľkých a výkonných webových rámcov Pythonu

Keď vytvoríte koncový bod pre web alebo službu, aj keď sa na prvý pohľad zdá skromná, môžete rýchlo zistiť, že to nie je všetko. Dokonca aj „jednoduchý“ web sa javí ako úľ zložitosti. Správa používateľov, návrh údajov, odosielanie formulárov, bezpečnosť - všetko je potrebné ručne implementovať.

Ak viete, že pri týchto veľkých webových projektoch budete potrebovať všetko a kuchynský drez, je najlepšie obrátiť sa na rámec, ktorý je dodávaný s batériami (a nabíjačkami). Tu je päť ťažkých webových rámcov pre Python, ktoré prichádzajú so všetkým, čo potrebujete na vytvorenie robustných webových aplikácií, a potom s niektorými.

CubicWeb

CubicWeb je označovaný ako „sémantický rámec webových aplikácií, ktorý uprednostňuje opätovné použitie a objektovo orientovaný dizajn.“ Je to zaujímavý systém - ako poznamenal Rick Grehan, keď ho recenzoval už v roku 2011 - ktorý zdôrazňuje použitie abstrakcií a opakovane použiteľných stavebných blokov kódu nazývaných „kocky“. V skutočnosti môže byť CubicWeb pre niektorých vývojárov príliš abstraktný alebo výstredný a jeho rýchlosť vývoja a sada funkcií oproti iným rámcom zaostávajú.

Kocky sú softvérové ​​komponenty, ktoré obsahujú schému (údajový model), entity (logika programovania) a zobrazenia. Zostavením viacerých kociek, z ktorých každá plní svoju vlastnú úlohu, môžete zostaviť softvérové ​​aplikácie tak, že znovu použijete svoj vlastný kód a kód ostatných.

V jadre poskytuje CubicWeb základné lešenie používané každou webovou aplikáciou: „úložisko“ pre dátové pripojenia a ukladanie; „webový engine“ pre základné požiadavky / odpovede HTTP a akcie CRUD; a schéma na modelovanie údajov. To všetko je popísané v definíciách triedy Python.

Pri nastavovaní a správe inštancií CubicWeb pracujete s nástrojom príkazového riadku podobným nástroju použitému pre Django. Vstavaný šablónový systém umožňuje programovo generovať výstup HTML. Môžete tiež použiť kocku, ktorá poskytuje nástroje pre webové používateľské rozhrania, napríklad pre rámec Bootstrap HTML.

Aj keď CubicWeb podporuje Python 3 (od verzie 3.23), zdá sa, že nepoužíva natívnu asynchronizáciu Pythonu 3. Okružným spôsobom, ako zahrnúť async, by bolo použitie modulu cubicweb.pyramid na použitie rámca Pyramid ako webového servera a čerpanie z vidlice Pyramid, ktorá používa asynchrónne konštrukcie. Je tiež možné vykonávať úlohy asynchrónne s kockou kubický webový pracovník. Všetko priamočiarejšie sa však nateraz javí ako nedostupné.

Na načítanie alebo manipuláciu s perzistentnými dátami v aplikácii CubicWeb používate jazyk Relation Query Language (RQL), ktorý využíva neurčito syntax podobnú SQL, ale má vzor podľa SparQL W3C. Dôvodom CubicWebu je opäť abstrakcia: RQL poskytuje vysoko oddelenú cestu na vzájomné prepojenie rôznych zdrojov údajov.

Pretože CubicWeb má veľa závislostí, je najlepšie ho používať pip nainštalovať aby ich všetky priniesli. Možno budete musieť vykonať určité množstvo manuálneho doladenia v miestnom prostredí. Toto je na rozdiel od iných rámcov, kde beží pip nainštalovať alebo je potrebné vložiť kód rámca do podpriečinka iného projektu. Alebo môžete na zabezpečenie vecí použiť kontajner Docker.

CubicWeb označuje svoju zdĺhavú dokumentáciu ako „kniha“. Autori knihy si našli čas a vysvetlili neobvyklý prístup aplikácie CubicWeb, demonštrovali, ako zostaviť niektoré základné aplikácie, zahrnúť odkazy na API a vo svojich konkrétnych riešeniach sa všeobecne snažili vyhnúť.

CubicWeb zostáva pod aktívnym, aj keď pomalým vývojom. Plány pre program CubicWeb 4.0 sa od roku 2012 zmenili, ale zatiaľ nebol ponúknutý žiadny časový harmonogram ich dodania.

Django

Za desaťročie a zmeny, odkedy sa Django prvýkrát objavilo, sa stal jedným z najbežnejšie nasadených rámcov Pythonu na vytváranie webových aplikácií. Django sa dodáva s väčšinou každej batérie, ktorú budete potrebovať, takže je vhodnejšia na vytváranie veľkých aplikácií ako malých.

Django strávil mnoho rokov sedením vo verzii 1.x. Keď Django 2.0 dorazilo koncom roku 2017, upustilo od kompatibility s Pythonom 2 v prospech Pythonu 3.4 a vyššieho. Django 3.0, vydané v decembri 2019, vyžaduje Python 3.6 alebo lepší a pridáva podporu pre nový asynchrónny štandard ASGI pre webové aplikácie v Pythone.

Kľúčovou súčasťou príťažlivosti Djanga je rýchlosť nasadenia. Pretože Django obsahuje toľko častí, ktoré potrebujete pre vývoj priemernej webovej aplikácie, môžete sa rýchlo pohybovať. Smerovanie, analýza adries URL, pripojenie k databáze vrátane ORM (objektovo-relačného mapovača), overovanie formulárov, ochrana pred útokmi a šablóna sú integrované.

Nájdete stavebné prvky pre najbežnejšie scenáre webových aplikácií. Napríklad správu používateľov nájdete na väčšine webových stránok, takže Django ju ponúka ako štandardný prvok. Namiesto toho, aby ste museli vytvárať svoj vlastný systém na sledovanie používateľských účtov, relácií, hesiel, prihlásení / odhlásení, správcovských oprávnení atď., Django tieto funkcie poskytuje natívne. Môžu byť použité tak, ako sú, alebo rozšírené tak, aby zahŕňali nové prípady použitia s minimálnou prácou.

Django má rozumné a bezpečné predvolené hodnoty, ktoré pomáhajú chrániť vašu webovú aplikáciu pred útokom. Keď umiestnite premennú do šablóny stránky, napríklad reťazec s formátom HTML alebo JavaScript, obsah sa nevykreslí doslovne, pokiaľ výslovne neurčíte inštanciu premennej ako bezpečnú. Toto samo o sebe eliminuje mnoho bežných problémov so skriptovaním medzi servermi. Ak chcete vykonať overenie formulára, môžete použiť všetko od jednoduchej ochrany CSRF po plnohodnotné mechanizmy overovania jednotlivých polí, ktoré vracajú podrobnú spätnú väzbu o chybách.

Sada tak bohatých a širokých funkcií, aké ponúka Django, by bez robustnej dokumentácie k tomu nebola dobrá. Dokumentácia Django vŕta do všetkých aspektov rámca z viacerých uhlov. Práca s Pythonom 3 alebo inými príchuťami jazyka, správne zabezpečenie, implementácia bežných komponentov webových aplikácií (ako sú relácie alebo stránkovanie), generovanie súborov Sitemap - všetko je obsiahnuté. Rovnako sú podrobne popísané API pre každú vrstvu aplikácie - model, zobrazenie a šablónu.

S veľkou silou však prichádza veľká zložitosť. Django aplikácie majú reputáciu špičkových aplikácií, ktoré sú plné mnohých pohyblivých častí. Aj jednoduchá aplikácia Django vyžaduje na spustenie poriadnu konfiguráciu. Ak je vaším cieľom urobiť niečo viac než len nastaviť niekoľko jednoduchých koncových bodov REST, je Django takmer určite prehnaný.

Django má tiež svoje zvláštnosti. Napríklad šablóny stránok nemôžu používať výzvy. Príklad: Môžete prihrať {{user.name}} ako komponent v šablóne, ale nie {{user.get_name ()}}. Je to jeden zo spôsobov, ako Django zaisťuje, že šablóny vás nechtiac nestrelia do nôh, ale tieto obmedzenia môžu byť nepríjemné, ak na ne nie ste pripravení. Aj keď existujú riešenia, majú tendenciu vyberať si daň z výkonu.

Od verzie 3.0 Django pridal podporu pre asynchrónne zobrazenia. Bohužiaľ zatiaľ neexistuje podpora pre asynchronizáciu v iných častiach zásobníka Django, napríklad v ORM. Ale môžete nasadiť Django pomocou ASGI, aby ste naplno využili asynchrónne zobrazenia.

Web2py

Vo svete programovania v Ruby je Ruby on Rails de facto webový rámec. Profesor počítačových vied na Univerzite DePaul Massimo Di Pierro sa inšpiroval Rails pri vytváraní webového rámca v Pythone, ktorý sa podobne ľahko nastavoval a používal. Výsledkom je Web2py.

Najväčším lákadlom Web2py je zabudované vývojové prostredie. Keď nastavujete inštanciu Web2py, poskytuje sa vám webové rozhranie, v podstate online editor aplikácií Pythonu, kde môžete konfigurovať komponenty aplikácie. To zvyčajne znamená vytváranie modelov, pohľadov a radičov, každý popísaný prostredníctvom modulov Python alebo šablón HTML. Niekoľko príkladov aplikácií sa dodáva s produktom Web2py po vybalení z krabice. Môžete ich rozdeliť a zistiť, ako fungujú, alebo ich využiť ako štartovacie šablóny na vytvorenie vlastných aplikácií.

Vývojári zvyčajne implementujú Web2py stiahnutím jeho zdrojového kódu a na ňom založenom. Ale pre menej technických používateľov systému Windows alebo MacOS ponúkajú tvorcovia Web2py verzie, ktoré sú v podstate samostatnými servermi. Stiahnite, rozbaľte a spustite jednu z týchto verzií a získate miestny webový server s predkonfigurovanou kópiou zabudovanej aplikácie Web2py. Toto je pekný spôsob, ako sa postaviť na nohy pri vytváraní aplikácie Web2py, ktorú je potom možné podľa potreby nasadiť inde.

Webové rozhranie Web2py bolo postavené na platforme Bootstrap 4, takže je ľahké pre oči aj ľahkú navigáciu. Editor v prehliadači nenahrádza plnohodnotné IDE, ale je vybavený užitočnými pomôckami, ako je číslovanie riadkov a zvýraznenie syntaxe Pythonu (vrátane automatického odsadenia). Zahrnuté je tiež rýchle webové rozhranie pre shell Pythonu, takže môžete komunikovať s Web2py z príkazového riadku - pekný ústupok odborníkom.

Systém abstrakcie dát používaný v Web2py funguje trochu inak ako ORM od Django a od iných ORM inšpirovaných ním (napríklad Peewee). Tieto systémy používajú triedy Python na definovanie modelov, zatiaľ čo Web2py používa funkcie konštruktora ako definova_tabulka na vytvorenie inštancie modelov. Rozdiely sa pravdepodobne prejavia len vtedy, ak ste zvyknutí na iný spôsob; nemali by zastrašovať nováčikov. Pravdepodobne nebudete mať problémy s pripojením Web2py k poskytovateľovi údajov, pretože hovorí s takmer každou významnou databázou, ktorá existuje.

Skutočne užitočnou funkciou súvisiacou s databázou v Web2py je schopnosť generovať diagram modelov, čo vám umožní vizualizovať, ako vaše modely navzájom súvisia. Aby ste túto funkciu povolili, budete si musieť nainštalovať knižnicu PyGraphviz.

Web2py dodáva mnoho ďalších profesionálnych komponentov: internacionalizačné funkcie, viac metód ukladania do pamäte cache, kontrolu a autorizáciu prístupu a dokonca aj front-endové efekty (napríklad výber dátumu vo formulároch) prostredníctvom integrovanej podpory pre jQuery a AJAX. Zahrnuté sú tiež háky pre externý a interný middleware, aj keď nemáte oprávnenie používať middleware na nahradenie základných funkcií Web2py. V Web2py však zatiaľ nie je explicitne využité asynchrónne fungovanie Pythonu, aj keď existuje plánovač na spracovanie dlhotrvajúcich úloh.

Niet divu, že sa dokumentácia spoločnosti Web2py označuje ako „kniha“. Najskôr pokrýva ohromujúce množstvo materiálu v prostredí Web2py, Python a v prostrediach nasadenia použitých pre oba typy. Po druhé, je písaný veľmi prístupným naratívnym štýlom. Po tretie, hovorí sa v nej do hĺbky o bežných scenároch vytvárania aplikácií. Celá kapitola je napríklad o používaní jQuery na vytváranie aplikácií AJAX.

Weppy

Weppy sa cíti ako značka na polceste medzi minimálnou jednoduchosťou banky a úplnosťou Djanga. Zatiaľ čo vývoj aplikácie Weppy má priamočiarosť Flash, Weppy prichádza s mnohými funkciami nachádzajúcimi sa v Django, ako sú dátové vrstvy a autentifikácia. Weppy je teda vhodný pre aplikácie, ktoré sa pohybujú od extrémne jednoduchých až po mierne prepracované.

Na prvý pohľad vyzerá kód Weppy veľmi dobre, napríklad kód banky alebo kód fľaše. Na spustenie základnej webovej stránky s jednou cestou je potrebných niekoľko pokynov. Trasy je možné opísať pomocou dekoratérov funkcií (ľahkým spôsobom) alebo programovo a syntax ich vykonávania úzko súvisí s bankou / fľašou. Šablóny fungujú zhruba rovnako, až na malé odchýlky v syntaxi.

Weppy kontrastuje s týmito menšími rámcami tým, že obsahuje niektoré funkcie, ktoré začleňujú iba ako doplnky alebo doplnky. Napríklad banka ani fľaša nemá zabudovaný systém ORM alebo systém správy údajov. Weppy obsahuje ORM, aj keď založený skôr na projekte pyDAL, ako na oveľa populárnejšom SQLAlchemy. Weppy dokonca podporuje migráciu schém, ktoré Django podporuje ako súčasť svojho ORM (migračný systém Django je tiež oveľa automatizovanejší). Zatiaľ čo Weppy má mechanizmus rozšírenia, zoznam oficiálne schválených doplnkov je malý, oveľa menší ako katalóg rozšírení pre Flask.

Ľahšie rámce ako Weppy sa často používajú na vytváranie rozhraní RESTful API a Weppy je na tento účel vybavený pohodlnými funkciami. Dajte a @ služba natierač na trase a vrátené údaje sa automaticky naformátujú podľa vášho výberu formátu JSON alebo XML.

Weppy obsahuje ďalšie funkcie, ktoré sa zdajú viac v súlade s väčším rámcom, ale sú implementované bez hromadnej úpravy. Príklady zahŕňajú mechanizmy overovania údajov, spracovanie formulárov, ukladanie do pamäte cache odpovedí a overovanie používateľov. Vo všetkých týchto prípadoch uplatňuje Weppy prístup „akurát“. Poskytované funkcie nie sú také úplné, ako by ste mohli nájsť v Django a iných ťažkých rámcoch, ale vývojár nemusí investovať veľa práce do toho, aby boli užitočné, a potom sa dajú kedykoľvek rozšíriť.

Ďalším prvkom rámca vysokej váhy, ktorý sa vo Weppy nachádza, je podpora internacionalizácie. Reťazce v šablónach je možné preložiť podľa súborov miestnych nastavení dodaných s aplikáciou, čo sú jednoduché slovníky Pythonu. Voľbu jazyka je možné nastaviť aj analýzou požiadavky prehliadača (tj. Hlavičky protokolu Accept-Language HTTP) alebo väzbou prekladu na konkrétnu cestu.

Dokumentácia Weppy má rovnakú príchuť ako samotný rámec. Je čistý, čitateľný a napísaný tak, aby ho ľudia konzumovali. Okrem obvyklého príkladu „ahoj svet“ obsahuje aj pekný návod, ktorý vám umožní vytvoriť systém mikroblogovania ako štartovací projekt.

Dlhodobé plány pre Weppy zahŕňajú podporu asynchronizácie a zásuviek ako nízkoúrovňových, prvotriednych entít. Vývojári spoločnosti Weppy plánujú predstaviť tieto funkcie vo verzii 2.0 a potom vyžadovať pre všetky budúce verzie Weppy Python 3.7 alebo lepší.

Zope

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