Python Rámců Srovnání: Django, Pyramidy, Baňky, Šanić, Tornádo, BottlePy a Více

Python rámců může být rozdělena do několika oblastí, jako Python je velmi rozmanitý jazyk, a může být použit v různých oblastech. Každá z těchto oblastí má své vlastní rámce, z nichž některé jsou populárnější než jiné. Jedním z nejpopulárnějších oborů, ve kterých se Python používá, je vývoj webových aplikací, na které se dnes zaměříme.

prezentované rámce mohou být rozděleny do tří kategorií: full stack rámců, které nabízejí hodně out of the box funkce na serveru a na straně klienta; microframeworks, které nabízejí podporu na straně serveru (někdy mohou být rozšířena na straně klienta) a umožňují vytvářet webové aplikace jen pomocí jediného Python souboru; a, konečně, asynchronních rámců, které se zabývají požadavky asynchronně.

Full-stack webové rámce

Django

Django je jedním z nejpopulárnějších Python rámců. Nabízí mnoho out-of-the-box funkcí, jako je Admin Panel nebo generických pohledů a formulářů. Django je hlavní charakteristiky jsou:

  • jeden řídící skript („manage.py“), které mohou být použity pro provádění většiny rámci konkrétní akce (jako výchozí vývojový server, vytvořit admin uživatele, shromažďování statické soubory, atd.),

  • synchronní zpracování požadavku,

  • MTV (model-template-view) architektura vzor (což je variace na model-view-controller pattern),

  • vlastní objektově-relační mapování (ORM) pro komunikaci s databází,

  • použití funkcí a tříd pro zobrazení kontextu vzniku a působení manipulace,

  • Django je přísná a síly své vlastní kódování styl na vývojáře – hodně meta programování,

  • velmi dobrý, rozsáhlou dokumentaci s příklady,

  • vlastní HTML šablony vykreslování motor,

  • vlastní URL směrování systému,

  • soulad s WSGI standard,

  • podpora pro statické soubory – URL routing, jakož i zjišťování a shromažďování,

  • velký počet externích modulů, např. Django REST Framework Django CMS, Django Programy (websockets).

Django je vhodná pro větší projekty, kde je rozsáhlé backend a frontend podpora vyžadována, nebo v případech, kdy čas hraje zásadní roli, jako Django nabízí velké množství hotových komponent. Kódování v Djangu se většinou spoléhá na přizpůsobení generických částí kódu. Vývojář musí dodržovat soubor pravidel, které přicházejí s daným prvkem. Pro projekty, kde je požadována velká flexibilita kódu, Django nemusí být tou nejlepší volbou.

37,514 Github hvězdy / 183,588 StackOverflow otázky
5-Sep-30-2020-01-29-47-33-PM

Web2py

Web2py se zaměřuje na bezpečnost, rychlost vývoje a snadnost použití. Nabízí mnoho funkcí po vybalení z krabice: webový server, databáze, admin panel, wiki nebo mřížky widgety. Rámec hlavní charakteristiky jsou:

  • synchronní zpracování požadavku,

  • vlastní Databáze Abstrakce Vrstva (DAL), který se chová jako ORM,

  • vynutí MVC struktury,

  • funkce a třídy mohou být použity pro vytvoření Řadiče,

  • přísná „měli by Tam být jen jeden způsob, jak dělat věci“ filozofie,

  • bohatá dokumentace s mnoha příklady,

  • vlastní HTML engine, který umožňuje Python kódu, které mají být použity v šablonách,

  • vlastní směrování – URL funkce, která generuje vnitřní cesty, na akce a statické soubory,

  • podpora pro WSGI standardní, ale je možné používat CGI (Common Gateway Interface), FastCGI, GAE (Google App Engine), nebo jiné,

  • nabízí statický soubor směrování a streamování během vývoje,

  • má vestavěný ZBYTEK služeb, ale vyžaduje Tornádo rámec pro Web Socket využití.

Web2py byl velmi inspirován Ruby on Rails a Django frameworky a bere to, co je nejlepší z obou.
může to být dobrá volba pro programátory, kteří chtějí migrovat z Ruby, nebo pro ty, kteří se nudí Django, ale hledají další velký a na funkce bohatý rámec.
nabízí aplikaci „admin“, která funguje jako webový IDE pro vývoj a správu aplikací (např. tvorba aplikací, editor kódu). To je také podporováno PyCharm.
Web2Py obecně nepostrádá žádné funkce, které má Django. Tyto dva rámce lze použít ke splnění stejných úkolů. Web2Py je mladší a má menší komunitu než Django, takže v případě potíží může být o něco těžší najít pomoc.

1,665 GitHub hvězdy / 2,004 StackOverflow otázky
0Python to Rámců Srovnání: Django, Pyramidy, Baňky, Šanić, Tornádo, BottlePy a Více

TurboGears

TurboGears spojuje mnoho externích služeb vytvořit funkční rámec:

  • synchronní zpracování požadavku,

  • model-view-controller (MVC) vzor,

  • používá SQLAlchemy ORM,

  • umožňuje využití funkcí a zobrazení třídy kontextu generace,

  • nabízí některé ready-k-použití generické třídy (velmi zajímavé APIController pro REST API tvorba),

  • dokumentace je trochu chaotický, ale to může být otázka zvyknout si na to,

  • používá Kajiki jazyk šablony,

  • vlastní URL routing/odeslání metody,

  • kompatibilní s WSGI standardní,

  • podporuje statické soubory konfigurace cesty

  • lze rozšířit o další moduly, např.

rámec není tak populární jako dva předchůdci, ale přesto stojí za to vyzkoušet.

259 GitHub stars / 107 StackOverflow otázky
Python Frameworks Comparison: Django, Pyramidy, Baňky, Šanić, Tornádo, BottlePy a Více

Microframeworks

Baňky

To je jeden z nejvíce populární Python microframeworks, je to rychlé a spolehlivé. Říká se, že byl vytvořen jako vtip. Hlavní charakteristiky rámce jsou:

  • synchronní žádost o podporu,

  • nenutí každý projekt architektury, ale má nějaké doporučení (balíček, modul, plány),

  • nenabízí ORM, ale SQLAlchemy nebo jiné mohou být použity,

  • podporuje funkce, stejně jako některé Django-jako generické třídy pohledy (od Baňky 0.7),

  • volné kódování styl, to není žádný řešení, většina rozhodnutí je ponecháno na vývojáře uvážení,

  • dobrá dokumentace s příklady,

  • je možné použít Jinja2 Šablony HTML engine,

  • Werkzeug směrování systému,

  • kompatibilní s WSGI standard,

  • podporuje základní statické soubor směrování,

  • může být rozšířen o některé další moduly třetích stran, např. Baňka-Rest pro rozhraní REST API vytvoření nebo baňky-socketio pro Web Sockets Podporu.

tento rámec bude stačit v malých a středních projektech. Má některé moduly třetích stran, které jsou připraveny k použití, stejně jako dobrá nativní řešení.
baňka by se měla osvědčit v úlohách, kde jsou vyžadovány složité vlastní funkce, ale Django se zdá být příliš velký pro úkol. Na druhou stranu nastavení baňky pro větší projekt od začátku může být obtížné, protože neexistuje žádný „oficiální“ způsob, jak toho dosáhnout.

39,946 GitHub stars / 24,512 StackOverflow otázky
Python Frameworks Comparison: Django, Pyramida, baňka, Sanic, Tornado, BottlePy a další

Pyramida

Pyramida začíná minimální instalací, kterou lze v případě potřeby rozšířit. Stojí za zmínku, že je součástí projektu Pylons, který integruje webové technologie.
to jsou některé z nejdůležitějších vlastností pyramidy:

  • nabízí synchronní zpracování požadavku,

  • názory kontextech mohou být definovány funkce, stejně jako třídy,

  • neexistuje žádný konkrétní ORM, ale SQLAlchemy je doporučeno,

  • nenutí žádné kódování styl nebo projekt architektury – TIMTOWTDI,

  • nabízí dobré dokumentace s návody a příklady,

  • žádné konkrétní šablonu HTML engine je doručena, ale Chameleon je doporučeno,

  • zajímavý vlastní směrovací systém umožňuje více pohledů na jeden zápas URL,

  • to je WSGI kompatibilní,

  • rozsáhlá podpora statických souborů-soubory sloužící, směrování URL pro statické soubory,

  • lze rozšířit o externí moduly, např.

Tento rámec by mohl být dobrou volbou v případech, kdy nechcete trávit čas učení vlastní rámce řešení (jako ORM), ale stále je třeba rozsáhlý nástroj pro stavební software, jako Pyramida podporuje použití mnoha známých stand-alone řešení.
má dobré možnosti škálování-inzeruje se jako rámec, který může „začít malý a dokončit velký“.

při nichž 2974 GitHub otázky / 2,060 StackOverflow otázky
Python Rámců Srovnání: Django, Pyramidy, Baňky, Šanić, Tornádo, BottlePy a Více

Připomínky

Umožňuje vytvoření webové aplikace stejným způsobem jako objektově-orientovaný Python projektu. Nemá žádné funkce full-stack a nevynucuje žádná konkrétní řešení-vývojář se může rozhodnout, jak řešit problémy, ke kterým dochází během vývoje. Funkce CherryPy jsou:

  • nabízí synchronní žádost o podporu,

  • nenutí jakýkoli projekt, struktura nebo architektura,

  • není dodat nějaké ORM, ale SQLAlchemy nebo SQLObject mohou být použity,

  • nedodá žádné HTML šablony motoru,

  • má volné kódování styl,

  • nabízí slušnou dokumentaci,

  • směrování systému tras (Python verze Kolejnice, směrovací systém), mohou být použity,

  • je kompatibilní s WSGI,

  • má dobrou podporu pro statické soubory – umožňuje k servírování soubory nebo celou složku adresáře,

  • umožňuje vytváření REST API pouze s vestavěnými nástroji,

  • usnadňuje použití webových soketů pomocí modulu ws4py.

hlavní výhodou Připomínky je, že jde o výrobní-ready WSGI server, který odstraňuje nutnost nastavení externího serveru během nasazení.
hlavní nevýhodou tohoto rámce je, že není příliš populární, proto má menší počet externích modulů a méně živou komunitu.

829 GitHub hvězdy/ 1,244 StackOverflow otázky
Python Rámců Srovnání: Django, Pyramidy, Baňky, Šanić, Tornádo, BottlePy a Více

BottlePy

To je další microframework, že se inzeruje jako rychlá a jednoduchá. Stojí za zmínku, že BottlePy je dodáván jako jediný modul bez dalších závislostí. Funkce:

  • implementuje synchronní požadavek manipulace,

  • nabízí vlastní HTML motor, ale ostatní motory jako Mako, Jinja2 nebo Gepard by mohly být použity,

  • není dodat ORM, ale je možné použít externí řešení, např. SQLAlchemy nebo Macaron,

  • nenutí jakýkoli projekt, architektura,

  • nabízí dostatečnou dokumentaci,

  • má vlastní směrování systému, ale Werkzeug směrování systém může být použit (přes láhev-werkzeug),

  • implementuje WSGI standardní,

  • nabízí základní statické soubor směrování,

  • nabízí greenlets (s gevent) jako asynchronní požadavek zpracování řešení,

  • je možné vytvářet REST API bez externích modulů – podporuje JSON dat klienta.

Vzhledem ke své malé velikosti (jen jeden soubor) a žádné vnější závislosti (Python standardní knihovna) vyžaduje, může být dobrou volbou pro začátečníky, kteří se chtějí začít učit vývoj webových aplikací.
může to také udělat dobrou práci s velmi malými místy nebo jednorázovými testy. BottlePy nebude nejlepší volbou pro středně velké nebo větší projekty, protože by vyžadovalo nějakou práci, aby se dostalo do bodu, kdy začínají těžší rámce.

5,795 GitHub hvězdy / 1,288 StackOverflow otázky,

Asynchronní rámce

Aiohttp

je To rozsáhlé asynchronní Python framework. Nabízí server s middleware, signály, půvabné odstávky a mnoho dalších:

  • asynchronní požadavek manipulaci, klient a server websockets,

  • je možné použít GINO asynchronní ORM,

  • podporuje funkci a třída-založené pohledy,

  • dostatečnou dokumentaci, ale trochu těžké se orientovat,

  • je možné používat čisté SQLAlchemy, ale GINO jako asynchronní obal je doporučeno,

  • podporuje Postgres, MySQL, Redis asynchronní řidiči,

  • ne out-of-the-box šablony motor Jinja2 nebo Mako by mohly být použity,

  • vlastní směrování systému,

  • ne WSGI podporu,

  • podporuje směrování pro statické soubory,

  • hodně moduly třetích stran, které mohou dále prodloužit rámec, např. aiohttp-apispec pro REST API stvoření, aiohttp-bezpečnost pro uživatele, ověřování a oprávnění.

Jako to nabízí spoustu funkcí, po vybalení z krabice (např. podpora klienta a serveru stranách, websockets, middleware, signály), Aiohttp může být použit s středně velké projekty (nebo dokonce s větší z nich).

6,378 GitHub stars / 503 StackOverflow otázky
Python Frameworks Comparison: Django, Pyramidy, Baňky, Šanić, Tornádo, BottlePy a Více

Šanić

Šanić je velmi baňky-jako rámec: je to malá, liberální a ponechává hodně prostoru pro vývojáře. Jeho hlavním určujícím rysem je jeho rychlost.
zde jsou některé další charakteristiky:

  • podpora pro asynchronní požadavek psovoda,

  • nenabízí žádné databáze rozhraní, ale GINO asynchronní ORM může být instalován,

  • nabízí funkce a třídy jako zdroj zobrazení kontextu,

  • kódování styl je spíše volné, velmi podobné Baňky,

  • dokumentaci dodané s „readthedocs“,

  • Jinja2 šablony HTML motor může být použit,

  • custom made směrování systému,

  • není WSGI kompatibilní ve výchozím nastavení, ale třetí strany modulu (šanić-dispečer) může být instalován na podporu,

  • má základní statické směrování souborů,

  • lze rozšířit o další moduly, např.

To by mělo být dobré rozhodnutí vybrat Šanić, když už jste měl nějaké zkušenosti s Baňky, jako tyto dva rámce mají hodně společného.
Sanic nabízí výchozí manipulaci s konfigurací, zatímco v aiohttp již bylo zmíněno, uživatel to musí udělat sám. Má některé zajímavé moduly třetích stran, jako je omezovač rychlosti požadavků nebo integrace GraphQL.

10,625 Github hvězdy / 58 StackOverflow otázky,

Tornado

Tornádo je Python web rámec a asynchronní sítě knihovny, původně vyvinutý na FriendFeed (sociální agregace stránky). Díky tomu nabízí vestavěnou integraci se sociálními službami, jako je Google, Facebook a Twitter.
integrace s jinými frameworky a knihovnami je také možná: Twisted, asyncio nebo dokonce WSGI aplikace. Funkce Tornado:

  • nabízí mnoho generických tříd, které lze použít pro vytvoření aplikace, např. Router, nebo SocketHandler pro websockets,

  • vlastní HTML šablony motoru,

  • jasné a snadno-až k-číst dokumentaci,

  • funkce a třídy mohou být použity pro definování akcí a zpracování žádostí,

  • vlastní směrování manipulace – nabízí generické třídy, než může být použit pro vytvoření trasy,

  • podporuje WSGI, ale to není doporučeno – uživatel by měl používat Tornádo vlastní rozhraní místo toho,

  • out-of-the-box podpora websockets, ověřování (např. xsrf ochrana),

  • pro vytvoření REST API nejsou potřeba žádné další nástroje.

rámec by měl dobře fungovat v případech, kdy existuje mnoho příchozích připojení, které lze zpracovat rychle nebo v řešeních v reálném čase, např.
Tornado se snaží vyřešit problém c10k, takže vysoká rychlost zpracování je prioritou.
Další výhodou Tornado je jeho nativní podpora sociálních služeb. Tento rámec nebude dobrou volbou pro vytváření standardních webů CRUD nebo velkých obchodních aplikací, protože nebyl navržen tak, aby byl používán tímto způsobem. U větších projektů může být integrován s aplikacemi WSGI jako součást jejich větší struktury a starat se o úkoly, které vyžadují vysokou rychlost manipulace.

16,768 Github hvězdy / 3,263 StackOverflow otázky,

Shrnutí

webové rámce jsou uvedeny výše, jsou jen malý kousek větší a širší rodiny Python rámců.
každé řešení má své silné a slabé stránky a stejně jako u všeho jiného neexistuje dokonalá shoda, která by vyřešila každý daný úkol.
nejdůležitější otázky, na které je třeba při výběru rámce odpovědět, jsou diktovány problémy, které je třeba vyřešit.

  • Pokud je vyžadována rozsáhlá podpora na straně serveru a prohlížeče, může být dobrou volbou full-stack framework.
  • pro menší projekty nebo tam, kde je flexibilita při psaní kódu prioritou, může být mikroframwork cestou.
  • v případech, kdy rychlost zpracování požadavků hraje důležitou roli nebo projekt bude muset řešit dlouhé doby odezvy, asynchronní rámec by měl stačit.

Napsat komentář

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