Python rammer kan deles inn i noen få områder Som Python er et svært variert språk og kan brukes i ulike felt. Hvert av disse feltene har sine egne rammer, hvorav noen er mer populære enn andre. Et Av De mest populære feltene Python brukes i er webutvikling, som vi vil fokusere på i dag.de presenterte rammene kan deles inn i tre kategorier: full stack frameworks, som tilbyr mange ut av boksen funksjoner for serveren og klientsiden; microframeworks, som tilbyr server-side støtte (noen ganger kan de utvides til klientsiden) og tillate å lage en webapplikasjon bare ved å bruke en Enkelt Python-fil; og til slutt asynkrone rammer, som håndterer forespørsler asynkront.
Full-stack web frameworks
Django
Django Er et Av De mest populære Python-rammene. Det tilbyr en rekke out-of-the-box funksjoner som Admin Panel eller Generiske Visninger og Skjemaer. Django viktigste kjennetegn er:
-
en administrerende script («manage.py») som kan brukes til å utføre de fleste rammespesifikke handlinger (som å starte utviklingsserveren, opprette en admin-bruker, samle statiske filer etc.),
-
synkron forespørsel behandling,
-
MTV (modell-mal-view) arkitektur mønster (som er variant av modell-view-kontrolleren mønster),
-
tilpasset objekt-relasjonell kartlegging (ORM) for kommunikasjon med databasen,
-
bruk av funksjoner og klasser for visning kontekst opprettelse og handling håndtering,
- i django er streng og tvinger sin egen koding stil på utbygger – mye meta programmering,
-
veldig bra, omfattende dokumentasjon med eksempler,
-
custom html maler gjengivelse samsvar MED wsgi standard,
-
støtte for statiske filer – URL ruting samt deteksjon og samling,
-
et stort antall eksterne moduler, F.Eks Django REST Rammeverk, Django CMS, Django Kanaler (websockets).Django er en god passform for større prosjekter, hvor omfattende backend og frontend-støtte er nødvendig eller i tilfeller der tid spiller en avgjørende rolle, Da Django tilbyr et stort antall klare komponenter. Koding I Django er for det meste avhengig av å tilpasse generiske deler av koden. Utvikleren ma folge et sett med regler som folger med gitt element. For prosjekter der mye kode fleksibilitet er ønsket, Kan Django ikke Være det beste valget.
37 514 Github stjerner / 183 588 stackoverflow spørsmål
Web2py
Web2py fokuserer på sikkerhet, utvikling hastighet og brukervennlighet. Det tilbyr en rekke funksjoner ut av boksen: en webserver, database, admin panel, wiki eller grid widgets. Framework viktigste kjennetegn er:
-
synkron forespørsel behandling,
-
tilpasset Database Abstraksjon Lag (DAL) som fungerer SOM ORM,
-
tvinger EN MVC struktur,
-
funksjoner og klasser kan brukes for å lage Kontrollere,
-
streng «det bør bare være en måte å gjøre ting» filosofi,
-
rik dokumentasjon med mange eksempler,
-
tilpasset html – motor Som Gjør At Python-Kode KAN BRUKES i malene,
-
tilpasset ruting-url-funksjon SOM GENERERER INTERNE baner for handlingene og statiske filer,
støtte FOR wsgi-standarden, Men Det er mulig å bruke CGI (Common Gateway Interface), FastCGI, Gae (Google App Engine) eller andre,
-
-
tilbyr statisk filruting og streaming under utvikling,
-
har innebygde REST-tjenester, men krever Tornado-rammeverket for Bruk Av Web Socket.Web2py var svært inspirert Av Ruby on Rails og Django rammer og tar det som er det beste fra dem begge. Det kan være et godt valg for programmerere som ønsker å migrere Fra Ruby eller for de som kjeder Seg Med Django, men leter etter et annet stort og funksjonsrikt rammeverk.
Det tilbyr en» admin » app, som fungerer som en web-basert IDE for applikasjonsutvikling og ledelse (f.eks app kreasjoner, kode editor). Det støttes også Av PyCharm. Generelt Mangler Web2Py ingen funksjoner Som Django har . Disse to rammene kan brukes til å oppfylle de samme oppgavene. Web2Py er yngre, og den har et mindre samfunn Enn Django, så det kan være litt vanskeligere å finne hjelp i tilfelle problemer.1,665 GitHub stars / 2,004 StackOverflow spørsmål
TurboGears
TurboGears kobler en rekke eksterne tjenester for å skape en funksjonell rammeverk:modell-view-controller (mvc) mønster,
-
bruker SQLAlchemy ORM,
-
tillater bruk av funksjoner og klassevisning kontekst generasjon,
-
det tilbyr noen klare for bruk generiske klasser (veldig interessant APIController for dokumentasjon er litt kaotisk, men det kan være et spørsmål om å bli vant til det,
-
bruker kajiki mal språk,
-
tilpasset url ruting/utsendelse metoder,
-
kompatibel med wsgi standard,
-
støtter statiske filer bane konfigurasjoner
-
kan utvides med flere moduler, f. Eks Circus og Chaussette for Web Sockets støtte.
rammen er ikke så populær som det er to forgjengere, men likevel er det verdt å sjekke ut.
259 GitHub stars / 107 stackoverflow spørsmål
Microframeworks
Flask
Det er en Av De mest populære Python microframeworks, det er pålitelig og rask. Det sies at det ble opprettet som en vits. De viktigste egenskapene til rammen er:
-
synkron forespørsel støtte,
-
tvinger ikke noen prosjektarkitektur, men har noen anbefalinger (pakke, modul, tegninger),
-
det tilbyr IKKE ORM, Men SQLAlchemy eller andre kan brukes,
-
støtter funksjoner samt Noen Django-lignende generiske klassevisninger (fra Kolbe 0.7),
-
løs koding stil, betyr det ikke tvinge noen løsninger, de fleste beslutninger overlates til utviklerens skjønn,
-
god dokumentasjon med eksempler,
-
Det er mulig å bruke Jinja2 HTML Mal motor,
-
werkzeug rutesystem,
-
kompatibel MED WSGI standard,
-
støtter grunnleggende statisk fil ruting,
-
kan utvides med noen ekstra tredjeparts moduler, f.eks.
dette rammeverket vil gjøre utslaget i små og mellomstore prosjekter. Den har noen tredjeparts moduler som er klare til bruk, samt gode innfødte løsninger.
Flask skal bevise seg i jobber der kompliserte tilpassede funksjoner kreves, men Django virker for stor for oppgaven. På den annen side kan det være vanskelig å sette Kolbe for et større prosjekt fra begynnelsen, da det ikke er noen «offisiell» måte å gjøre det på.
39,946 Github stars / 24,512 stackoverflow spørsmål
Pyramid
Pyramid starter med en minimal installasjon som kan utvides ved behov. Det er verdt å merke seg at Det er en del av Pylons-prosjektet, som integrerer web-relaterte teknologier.
Dette er Noen Av Pyramidens viktigste egenskaper:
-
tilbyr synkron forespørsel behandling,
-
visninger sammenhenger kan defineres med funksjoner samt klasser,
-
det er ingen spesifikk ORM, men SQLAlchemy anbefales,
-
ikke tvinge noen koding stil eller prosjektarkitektur – TIMTOWTDI,
-
tilbyr god dokumentasjon med tutorials og eksempler,
-
ingen spesifikk html-malmotor leveres, men kameleon anbefales,
-
et interessant tilpasset rutesystem lar flere visninger matche en url,
-
det er wsgi-kompatibelt,
-
omfattende statiske filer støtte – filer servering, URL ruting for statiske filer,
-
kan utvides med eksterne moduler, f. eks Gesims FOR REST Apier, aiopyramid med async støtte.dette rammeverket kan være et godt valg i tilfeller der du ikke ønsker å bruke tid på å lære tilpassede rammeverk løsninger (SOM ORM), men fortsatt trenger et omfattende verktøy for å bygge programvare, Som Pyramid støtter bruk av mange kjente frittstående løsninger.
Den har gode skaleringsfunksjoner-annonserer seg som et rammeverk som kan «starte små og fullføre store».2,974 GitHub spørsmål/2,060 StackOverflow spørsmål
CherryPy
Tillater etablering av web-applikasjon på samme måte som objektorientert Python prosjekt. Det har ingen full-stack funksjonalitet og ikke tvinge noen spesifikke løsninger – utbygger kan bestemme hvordan du skal løse problemer som oppstår under utvikling. Cherrypys funksjoner er:
-
tilbyr synkron forespørsel støtte,
-
ikke tvinge noen prosjektstruktur eller arkitektur,
-
leverer IKKE NOEN ORM, Men SQLAlchemy eller SQLObject kan brukes,
-
leverer IKKE NOEN HTML mal motor,
-
har en løs koding stil,
-
tilbyr anstendig dokumentasjon,
-
rutesystemet ruter (python versjon av rails rutesystem) kan brukes,
-
er kompatibel med wsgi,
-
har god støtte for statiske filer – gjør det mulig å betjene filer eller hele filen tillater etablering AV REST Apier med innebygde verktøy bare,
-
forenkler bruk Av Web Sockets via ws4py modulen.den største fordelen Med CherryPy er at Den kommer med en PRODUKSJONSKLAR wsgi-server, som fjerner nødvendigheten av å sette opp en ekstern server under distribusjon. den største ulempen ved dette rammeverket er at det ikke er veldig populært, derfor har det et mindre antall eksterne moduler og et mindre levende samfunn.
829 GitHub stars / 1,244 stackoverflow spørsmål
BottlePy
Det er enda en microframework som annonserer seg så raskt og enkelt. Det er verdt å merke seg At BottlePy leveres som en enkelt modul uten ekstra avhengigheter. Funksjon:
-
implementerer synkron forespørselshåndtering,
-
tilbyr tilpasset HTML-motor, men andre motorer som Mako, Jinja2 eller Cheetah kan brukes,
-
leverer IKKE ORM, men det er mulig å bruke eksterne løsninger, f. eks. Ikke tvinge noen prosjektarkitektur,
-
tilbyr tilstrekkelig dokumentasjon,
-
har en tilpasset rutesystem, men werkzeug rutesystem kan brukes (via flaske-werkzeug),
-
implementerer wsgi standard,
-
tilbyr grunnleggende statisk fil ruting,
-
tilbyr greenlets (med gevent) som asynkron forespørsel løsning,
-
det er mulig å lage rest api uten eksterne moduler – støtter json klientdata.
På grunn av sin lille størrelse (bare en fil) og ingen eksterne avhengigheter (Python standard library only) kreves, kan det være et godt valg for nybegynnere som ønsker å begynne å lære webutvikling. Det kan også gjøre en god jobb med svært små steder eller engangs tester. BottlePy vil ikke være det beste valget for mellomstore eller større prosjekter, da det ville kreve noe arbeid for å komme til det punktet hvor tyngre rammer starter.
5,795 GitHub stars / 1,288 stackoverflow spørsmål
Asynkrone rammer
Aiohttp
det er en omfattende Asynkron Python rammeverk. Det tilbyr en server med mellomvare, signaler, grasiøs shutdowns og mange flere:det er mulig å bruke GINO ASYNKRON forespørsel håndtering, klient og server websockets,
-
-
det er mulig Å bruke gino ASYNC ORM,
-
støtter funksjon og klassebaserte visninger,
-
tilstrekkelig dokumentasjon, men litt vanskelig å navigere,
-
det er mulig å bruke ren SQLAlchemy men GINO som en async wrapper anbefales,
-
støtter postgres, mysql, redis async drivere,
-
INGEN OUT-of-the-box mal motor, men jinja2 eller mako kan brukes,
-
tilpasset rutesystem,
-
ingen wsgi støtte,
-
støtter ruting for statiske filer,
-
en rekke tredjeparts moduler som kan ytterligere utvide rammeverket, f. eks aiohttp-apispec FOR REST API skapelse, aiohttp-sikkerhet for brukere godkjenninger og tillatelser.som det tilbyr en rekke funksjoner ut av boksen (f. eks støtte for klient og server sider, websockets, mellomvare, signaler), Aiohttp kan brukes med mellomstore prosjekter (eller med større seg).
6,378 Github stjerner / 503 stackoverflow spørsmål
Sanic
Sanic Er et veldig kolbe-lignende rammeverk: det er lite, liberalt og gir mye plass til utvikleren. Dens viktigste definerende funksjon er dens hastighet.
Her er noen andre egenskaper:-
støtte for async forespørsel handler,
-
tilbyr ikke noen databasegrensesnitt, MEN GINO ASYNC ORM kan installeres,
-
tilbyr funksjon og klasse som kilde til visning kontekst,
-
koding stil er ganske løs, svært lik Kolbe,
-
dokumentasjon levert med «readthedocs»,
-
jinja2 html mal motoren kan brukes,
-
skreddersydde RUTESYSTEM,
-
er ikke wsgi kompatibel som standard, men en tredjeparts modul (sanic-dispatcher) kan installeres for å støtte det,
-
har grunnleggende statisk filruting,
-
kan utvides med tilleggsmoduler, F.Eks.
Det bør være En god beslutning Å velge Sanic når Du allerede har hatt erfaring med Kolbe, da disse to rammene har mye til felles.
Sanic tilbyr standard konfigurasjonshåndtering, mens i aiohttp nevnt før, må brukeren gjøre det alene. Den har noen interessante tredjeparts moduler som en forespørsel rate limiter eller En GraphQL integrasjon.10 625 Github stars/58 StackOverflow spørsmål
Tornado
Tornado Er En Python web rammeverk og asynkron nettverk bibliotek, opprinnelig utviklet På FriendFeed (en sosial aggregering nettsted). Takket være det, tilbyr den en innebygd integrasjon med sosiale tjenester som Google, Facebook og Twitter. integrasjonen med andre rammer og biblioteker er også mulig: Twisted, asyncio eller WSGI applikasjoner. Tornado funksjoner:
-
tilbyr en rekke generiske klasser som kan brukes for å lage programmet, f. eks. For websockets,
-
tilpasset HTML mal motor,
-
klar og lett-å-lese dokumentasjon,
-
funksjoner og klasser kan brukes for å definere handlinger og håndtering forespørsler,
-
tilpasset ruting håndtering – tilbyr generiske klasser enn kan brukes for ruteopprettelse,
-
det støtter wsgi, men det anbefales ikke – brukeren bør bruke tornados egne grensesnitt i stedet,
-
out-of-the-box websockets-støtte, autentisering (f. eks. (som cookie signering eller XSRF beskyttelse),
-
ingen ekstra verktøy er nødvendig FOR REST API opprettelse.
rammen skal fungere godt i tilfeller der det er mange innkommende tilkoblinger som kan håndteres raskt eller i sanntidsløsninger, for eksempel chatter. Tornado prøver å løse c10k-problemet, så høy prosesshastighet er en prioritet. En annen fordel Med Tornado er dens innfødte støtte til sosiale tjenester. Dette rammeverket vil ikke være et godt valg for å lage standard CRUD-nettsteder eller big business-applikasjoner, da det ikke var designet for å bli brukt på den måten. For større prosjekter kan den integreres MED wsgi-applikasjoner som en del AV deres større struktur og ta vare på oppgaver som krever høye håndteringshastigheter.
16,768 Github stars / 3,263 stackoverflow spørsmål
Sammendrag
webrammene som presenteres ovenfor er bare en liten del av en større og bredere familie Av Python-rammer. Hver løsning har sine sterke og svake punkter, og som med alt annet, er det ingen perfekt match som vil løse hver gitt oppgave.
de viktigste spørsmålene som man må svare når man velger rammen, dikteres av problemer som må løses.- hvis omfattende støtte på server og nettleser side er nødvendig, så en full-stack rammeverk kan være et godt valg.
- for mindre prosjekter eller hvor fleksibiliteten i å skrive kode er en prioritet, kan en microframework være veien å gå.
- i tilfeller der forespørselsbehandlingshastighet spiller en viktig rolle eller et prosjekt må håndtere lange responstider, bør asynkron rammeverk gjøre trikset.
-
-