Kilde: jetbrains.com Husk, at de Python-rammer, som vi vil tale om her, ikke er opført i nogen bestemt rækkefølge: Vi har fokuseret på at vise, hvad du kan gøre, i modsætning til at fortælle dig, hvad du bør gøre.
Nogle ting at overveje
For det første skal du, når du beslutter, hvilken ramme du skal bruge, se på størrelsen og kompleksiteten af dit projekt. Hvis det, du ønsker at udvikle, er et stort system fyldt med funktioner og krav, er et full-stack framework måske det rigtige valg. Hvis din app er til den mindre og enklere side, bør du sandsynligvis overveje et microframework.
For det andet skal du undersøge, om det framework, du overvejer, kan skalere vertikalt og horisontalt. Dette er et must for projekter, der skal køre på flere servere, håndtere store mængder trafik og understøtte tilføjelsen af nye funktioner for at forbedre funktionaliteten.
Når du har valgt et framework, skal du kontakte et team af udviklere og bede dem om oplysninger om de anslåede omkostninger ved at udvikle din app.
Du kan finde oplysninger om typen og fokus for nogle frameworks her. En endelig beslutning bør dog komme fra din egen forståelse af dit projekt og de opgaver, du ønsker at forenkle.
Frameworks kan dog også stå i vejen for udviklingen. Når du vælger et full-stack framework, underskriver du ofte for et sæt begrænsninger. Selvfølgelig kan du finde måder at arbejde udenom dem på, men pas på, at du ikke bruger mere tid på at kæmpe for din egen frihed, end du ville have gjort ved at skrive en app i ren Python.
Full-stack frameworks
En full-stack framework eller en enterprise framework er en alt-i-en-løsning med biblioteker, der er konfigureret til at arbejde problemfrit sammen. Det understøtter udviklingen af backend-tjenester, frontend-grænseflader og databaser. En full-stack framework indeholder alt, hvad en udvikler har brug for til at opbygge en applikation. Python tilbyder mere end ét full-stack framework.
Django
Official Website | GitHub | PyPI | Awesome
GitHub Stars: 44.077 | GitHub Forks: 18,949
Django er en gratis open-source full-stack Python-ramme. Det forsøger at inkludere alle de nødvendige funktioner som standard i stedet for at tilbyde dem som separate biblioteker.
Nogle af de eksemplariske funktioner i Django er dens autentificering, URL-routing, skabelonmotor, objekt-relationel mapper (ORM) og migreringer af databaseskemaer (Django v.1.7+).
Disse funktioner gør Django meget skalerbart, latterligt hurtigt og ekstremt alsidigt.
Django bruger sin ORM til at mappe objekter til databasetabeller. Den samme kode fungerer med forskellige databaser og er ikke vanskelig at overføre fra en database til en anden. De vigtigste databaser, som Django arbejder med, er PostgreSQL, MySQL, SQLite og Oracle, men drivere fra tredjeparter giver dig mulighed for også at bruge andre.
Med Django kan du lave enhver webapplikation fra små projekter til komplekse websteder. Takket være sin fleksibilitet bruges Django også til at lave MVP’er, hvilket gør det muligt for nystartede virksomheder at optimere deres tid og budget.
Djangos brugerbase forventes at vokse, da mange udviklere ser dette framework som det bedste valg til nye teknologier som maskinlæring. Desuden planlægger Django-fællesskabet i 2020 at frigive flere biblioteker for at imødekomme den stigende efterspørgsel.
Her hos SteelKiwi bruger vi Django som vores primære ramme til backend-udvikling. Hvis du gerne vil se de fantastiske apps, vi allerede har udviklet med Django, kan du besøge vores projektside.
Pyramid
Officiel hjemmeside | GitHub | PyPI | Awesome
GitHub Stars: 3.215 | GitHub Forks: 866
Pyramid er en open-source – og den anden bemærkelsesværdige – Python-baseret webapplikationsramme. Dens mål er at gøre så meget som muligt med et minimum af kompleksitet. Pyramid kører på Python 3 og holder trit med de teknologiske forbedringer. Pyramid 1.10 er den aktuelle version af rammen og er den tiende opdatering siden 2010.
Den mest slående egenskab ved Pyramid er dens evne til at fungere godt med både små og store applikationer. Nogle af Pyramids fantastiske funktioner omfatter bl.a:
Single-file-applikationer
URL-generering
Udvidelig konfiguration
Altomfattende templating og aktivspecifikationer
Fleksibel godkendelse og autorisation
Test, support, og omfattende datadokumentation
Visningsprædikater og mange per-route-visninger
Funktionsdekoratorer
Prædikater
Renderers
Med Pyramid kan en udvikler selv bestemme over templatingsprog, generationsbiblioteker og databaselag.
Pyramid-fællesskabet er aktivt og kan prale af mange udgivelser. Udviklere kan følge frameworkets fremskridt ved at deltage i den officielle IRC-kanal eller deltage i Google- og Twitter-grupper.
TurboGears
Officiel hjemmeside | GitHub | PyPI
GitHub Stars: 654 | GitHub Forks: 654 | GitHub Forks: 65
TurboGears er en open-source, datadrevet full-stack webapplikationsramme. Det er bygget på masser af middleware og mange biblioteker og blev oprindeligt udformet for at kombinere de bedste komponenter fra andre Python-rammer.
TurboGears giver dig mulighed for hurtigt at udvikle udvidelige datadrevne webapplikationer. Det leveres med en brugervenlig templating-motor og en kraftfuld og fleksibel ORM. Ud over gode skabelonsystemer, der gør designernes liv lettere, tilbyder TurboGears masser af fleksibilitet, stærk understøttelse af aggregater, en kraftfuld ORM og genanvendelige snippets.
Nogle af TurboGears’ karakteristiske funktioner omfatter bl.a:
Understøttelse af flere databaser
MVC-agtig arkitektur
Understøttelse af SQLObject og SQLAlchemy
Kid og Genshi inkluderet i foretrukne templating-sprog
Validering med FormEncode
Pylons som webserver
ToscaWidgets, et programbibliotek, der forenkler koordineringen af frontend-design og serverudvikling
PasteScript-skabeloner
Frontvendte WSGI-baserede servere (Paste HTTP-server, CherryPy WSGI/HTTP-server, osv.)
Kommandolinjeværktøjer
Integration af MochiKit JavaScript-bibliotek
Alle funktioner implementeret som funktionsdekoratorer
Med hensyn til TurboGears’ fremtid arbejder fællesskabet i øjeblikket på at forbedre rammens muligheder og generelle stabilitet og er ved at frigive “minimumskoden”. Denne kode betegnes også som et mikroframework eller en strippet version af TurboGears. Den minimale kode vil hjælpe udviklere med at bygge apps hurtigere, hvilket sparer penge og tid.
Web2py
Official Website | GitHub | PyPI
GitHub Stars: 1.794 | GitHub Forks: 818
Web2py er et skalerbart open-source full-stack Python framework. Det er meget kraftfuldt, når det kommer til at håndtere data. Web2py blev oprindeligt tilbudt som et undervisningsværktøj med fokus på brugervenlighed. Dette forklarer, hvorfor der ikke er nogen konfigurationsfiler på projektniveau.
Det gode ved Web2py er dog, at det leveres med sit eget webbaserede IDE, som bl.a. indeholder en kodeeditor, debugger og one-click deployment.
Andre værdifulde Web2py-funktioner omfatter:
Ingen krav til installation og konfiguration
Mulighed for at køre på Windows, Mac, Linux/Unix, Google App Engine, Amazon EC2 og ethvert webhotel, der understøtter enten Python 2.5-2.7 eller Java+Python
Læsbarhed af flere protokoller
Datasikkerhed, der forhindrer sårbarheder som cross-site scripting, injektionsfejl og skadelig udførelse af filer
Succesfuld anvendelse af software engineering-praksis, hvilket gør koden let at læse og vedligeholde
Fejlersporing, grundig fejllogning og ticketing
Rollebaseret adgangskontrol
Støtte til internationalisering
Backwardkompatibilitet, der sikrer brugerorienteret udvikling uden at skulle miste forbindelsen til tidligere versioner
Et ticketing-system er den vigtigste funktion i Web2py; det udsteder billetter, når der opstår fejl. På denne måde kan brugerne følge fejl og deres status.
Trods alle disse fordele er Web2py-fællesskabet mindre end Pyramids eller Djangos. Der er ikke mange udviklere, der bruger det. Det betyder, at chancerne for at få support er mindre. Desuden er den officielle postliste ikke særlig aktiv.
Mikroframeworks
Et mikroframework, eller et minimalistisk rammeværk for webapplikationer, mangler de fleste af funktionaliteterne i et fuldgyldigt rammeværk som f.eks. en webskabelonmotor, autentifikationsfunktionalitet, konti, autorisation, inputvalidering og inputrensning. Et mikrorammeværk forsøger kun at levere de komponenter, der er nødvendige for at opbygge et program. Det kan også fokusere på at levere den nødvendige funktionalitet til en bestemt sfære.
Flask
Official Website | GitHub | PyPI | Awesome
Github Stars: 46.475 | GitHub Forks: 12.921
Flask er et Python-rammeværk, der er tilgængeligt under BSD-licensen. Det er inspireret af Sinatra Ruby-rammen. Flask er afhængig af Werkzeug WSGI-værktøjssættet og Jinja2-skabelonen.
Den vigtigste idé bag Flask er at hjælpe med at opbygge et solidt fundament for webapplikationer. Derfra kan du bruge alle de udvidelser, du måtte have brug for. Flask er valgt til alle og alle projekter. Faktisk er det et standardvalg til ethvert webprojekt, der ikke passer til Django.
Flasks lette og modulære design gør det nemt at tilpasse til udviklernes behov. Den indeholder en række nyttige out-of-the-box-funktioner:
Indbygget udviklingsserver og en hurtig debugger
Integreret understøttelse af enhedstestning
RESTful request dispatching
Jinja2 templating
Sikre cookies understøttes (klient-side sessioner)
WSGI 1.0-overensstemmelse
Unicode-baseret
Mulighed for at tilslutte enhver ORM
HTTP-forespørgselshåndtering
Siden lanceringen i 2010 er Flask blevet opdateret 27 gange. Til dato er det stadig den mest voksende Python-ramme. Mange Flask-udvidelser understøttes dog ikke længere: dokumentationen er forældet, og de bliver ikke længere udviklet. Hvis du løber ind i dette, skal du google for at finde et aktivt understøttet plug-in med lignende funktionalitet.
Flask
Official Website | GitHub | PyPI
GitHub Stars: 6.348 | GitHub Forks: 1.245
Bottle er et mikrorammeværk. Oprindeligt beregnet til at bygge API’er, og Bottle implementerer alt i en enkelt kildefil. Det har ingen afhængigheder ud over Python-standardbiblioteket. Ved at kode med Bottle kommer du tættere på metallet end ved at kode med et hvilket som helst full-stack framework. Bottle er dog kun et match, hvis du laver en meget lille applikation med højst 500 linjer kode og ingen særlige krav.
Dets standardfunktioner omfatter routing, templating, hjælpeprogrammer og en grundlæggende abstraktion over WSGI-standarden.
Routing – understøtter anmodninger til funktionsopkaldsafbildning, så du kan opnå rene og dynamiske URL’er
Skabeloner – en hurtig og Pythonisk skabelonmotor ud af boksen sammen med fuld understøttelse af mako, jinja2 og cheetah
Hjælpeprogrammer – komfortabel adgang til formulardata, filopladning, cookies, headere, og andre HTTP-relaterede metadata
Server – en indbygget HTTP-udviklingsserver, der understøtter fapws3, bjoern, GAE, СherryPy og enhver anden WSGI-kompatibel HTTP-server
Siden 2009 er Bottle blevet opdateret 73 gange, og nu er det en perfekt løsning til at lave prototyper, lære organisationen af webframeworks og bygge enkle personlige apps.
Alle bidrag til Bottle-fællesskabet accepteres via GitHub. Brugere kan også tilmelde sig Bottle-mailinglisten og -bloggen og følge med i de seneste ændringer på Twitter. Hvis du leder efter et yderligere forum til diskussion, kan du deltage i en freenode-chat.
CherryPy
Officiel hjemmeside | GitHub | PyPI
GitHub-stjerner: 1.057 | GitHub-gafler: 259
CherryPy er en open source, minimalistisk webramme. Det gør det ikke anderledes at bygge Python-webapplikationer end at bygge et hvilket som helst andet objektorienteret program.
CherryPy er skabt til at være udvidelig. Rammerne tilbyder endda mekanismer til hook points og udvidelser. f.eks. er en CherryPy-drevet webapp en selvstændig Python-applikation, der indlejrer sin egen multithreadede webserver. Med sin egen webserver omfatter udvidelsespunkterne funktioner uden for request-response-cyklussen, hvilket øger CherryPys udvidelsesmuligheder.
En CherryPy-drevet webapp er faktisk en selvstændig Python-applikation, der indlejrer sin egen multitrådede webserver. CherryPy-apps kan køre på alle operativsystemer, der understøtter Python (Windows, macOS, Linux osv.). De kan implementeres overalt, hvor du kan køre en almindelig Python-app. Du behøver ikke Apache til CherryPy-apps, men du kan køre en CherryPy-app bag Apache lige så godt, som du kan køre den bag Lighttpd eller IIS.
CherryPy er ikke en særlig begrænsende ramme, da den giver dig mulighed for at bruge enhver type teknologi til templating, dataadgang og så videre. Det er dog stadig i stand til at håndtere sessioner, statik, cookies, filoverførsler og alt det andet, som en webramme typisk kan.
Nogle af CherryPys standardfunktioner omfatter:
En HTTP/1.1-kompatibel WSGI thread-pooled webserver
En enkelhed til at køre flere HTTP-servere på én gang
Et kraftfuldt konfigurationssystem
Et fleksibelt plugin-system
Out-of-the-box-værktøjer til caching, kodning, sessioner, autentificering, statisk indhold og så videre
Indbygget understøttelse af profilering, dækning og testning
Mulighed for at køre på Python 2.7+, Python 3.1+, PyPy, Jython og Android
På trods af alle dens funktioner og fordele mener mange udviklere, at CherryPys dokumentation kunne bruge nogle forbedringer. Desuden kunne CherryPy i det mindste være en smule nemmere at bruge.
Som de fleste andre frameworks har CherryPy et fællesskab bag sig, der yder hjælp til begyndere og avancerede udviklere. CherryPy har en mailingliste og foreslår udviklere at deltage i rammens IRC-kanal eller Gitter- og Google-grupper.
Falcon
Officiel hjemmeside | GitHub | PyPI
GitHub Stars: 1.057 | GitHub Forks: 259
Falcon er en barmetal Python web API-ramme til opbygning af meget hurtige app-backends. Rammerens logo er en falk, hvilket symboliserer, hvor hurtigt Falcon arbejder.
Denne ramme giver udviklere mulighed for at lave renere designs og håndterer de fleste anmodninger. Falcon begrænser aldrig udviklere i valget af biblioteker til databaser og autorisering.
Andre værdifulde Falcon-funktioner:
100% kodedækning med en omfattende testsuite
En meget optimeret kodebase
Håndtering af undtagelser på forhånd
REST-inspirerede ressourceklasser
URI-skabeloner til intuitive rutiner
En nem adgang via anmodnings- og svarklasser
DRY request processing via middleware komponenter
Idiomatiske HTTP-fejlsvar
Enhedstest via WSGI-hjælpere
Falcon ignorerer unødvendige operationer under udviklingen af en webramme. Desuden giver det valgfrihed: udviklere kan træffe beslutninger, der hjælper dem med at tune og tilpasse implementationer frit.
To andre fordele, der er værd at nævne, er tilgængeligheden af omfattende dokumentation og et aktivt fællesskab.
Hug
Official Website | GitHub | PyPI
GitHub Stars: 5.905 | GitHub Forks: 347
Hug er en Python 3 API-udviklingsramme. Det er udformet til at give softwareingeniører mulighed for at udvikle et API én gang og derefter genbruge det, når der er behov for det. Hug-rammen forenkler API-udviklingen ved at tilbyde forskellige grænseflader. Det er hovedårsagen til, at denne ramme kaldes en af de hurtigste i Python 3.
Nøglefunktioner i Hug:
Support for automatisk dokumentation
Annotation-drevet validering
Indbygget versionsstyring
Kompatibilitet med Cython
Kan bruges som et Python-bibliotek
Hug-rammen indeholder så få integrationer og så lidt kode som muligt, forbliver funktionel og giver stor ydeevne. Desuden er Hug’s fællesskab i øjeblikket i vækst. Det er et tegn på rammens efterspørgsel og et bevis på, at når et problem opstår, kan en udvikler finde hjælp, når der opstår et problem.
FastAPI
Officiel hjemmeside |GitHub |PyPI
GitHub Stars: 4.835| GitHub Forks: 256
FastAPI er en moderne Python-baseret ramme. Det blev oprindeligt designet til at være let at bruge for at sikre den bedste udviklingsoplevelse. Til dato er FastAPI en af de hurtigste rammer til opbygning af API’er med Python 3.6+.
Rammen har taget flere karakteristika fra Flask, herunder dens enkelhed. Hele rammen er bygget på Starlette og indeholder de fleste af dens funktioner (skabeloner, WebSockets og GraphQL-understøttelse).
FastAPI-rammen tilbyder:
Stigning i udviklingshastighed med 200% til 300%
Mindre tid til fejlfinding
Minimering af kodedobling
Automatisk interaktiv dokumentation
FastAPI er ikke tæt koblet til nogen database. Den understøtter dog de databaser, du har brug for. Med FastAPI kan du frit strukturere dit projekt, som du har brug for, og du kan endda bruge de fleste af de samme filer fra et af dine Flask-projekter.
Den eneste ulempe er det lille fællesskab. Men det skyldes, at FastAPI er en forholdsvis ny ramme.
Asynkrone rammer
En asynkron ramme er en forholdsvis ny type af Python-ramme. Det er et mikrorammeværk, der gør det muligt for udviklere at håndtere et stort antal samtidige forbindelser. Asynkrone frameworks bruger ikke-blokkerende sockets og fodrer sig på Pythons asyncio-bibliotek.
Sanic
Official Website | GitHub | PyPI
GitHub Stars: 12.780 | GitHub Forks: 1,203
Sanic er en Python-webramme bygget på uvloop og skabt specielt til hurtige HTTP-svar via asynkron forespørgselshåndtering.
Det kører på Python 3.5+. Sanic understøtter asynkrone request handlers, hvilket gør den kompatibel med Python 3.5’s async/await-funktioner. Dette øger dens hastighed, idet den tilbyder ikke-blocking-funktioner.
Sonic betragtes som den foretrukne asynkrone ramme i Python-verdenen på grund af dens routing, middleware, cookies, versionering, statiske filer, blueprints, klassebaserede visninger og sockets. Det tilbyder dog ikke databaseunderstøttelse og templating.
I en benchmark-test med én proces og 100 forbindelser kunne Sanic håndtere 33.342 forespørgsler pr. sekund med en gennemsnitlig latenstid på 2,96 ms.
Tornado
Official Website | GitHub | PyPI
GitHub Stars: 18.292 | GitHub Forks: 5,040
Tornado er en Python webramme og et asynkront netværksbibliotek, der fokuserer på hastighed og evnen til at håndtere store trafikmængder. Det bruger en ikke-blokkerende netværks-I/O og løser C10k-problemet (hvilket betyder, at det, hvis det er konfigureret korrekt, kan håndtere 10.000+ samtidige forbindelser).
Det gør det til et fantastisk værktøj til opbygning af applikationer, der kræver høj ydeevne og titusindvis af samtidige brugere.
Tornados vigtigste funktioner er:
Indbygget understøttelse af brugergodkendelse
Realtidstjenester
Høj kvalitetspræstation
Python-baseret webtemplating-sprog
Non-blocking HTTP-klient
Implementering af godkendelses- og autorisationsordninger fra tredjeparter (Google OpenID/OAuth, Facebook Login, Yahoo BBAuth, FriendFeed OpenID/OAuth, Twitter OAuth)
Støtte til oversættelse og lokalisering
Med hensyn til popularitet står Tornado et sted mellem Django og Flask. Lad os sige, at du vil skrive noget i Flask eller Django på grund af deres funktioner og værktøjer, men du har også brug for meget bedre ydeevne. I dette tilfælde bør du vælge Tornado.
Other
Dash
Official Website | GitHub | PyPI | Awesome
GitHub Stars: 9.856 | GitHub Forks: 1,011
Dash er en open-source Python-ramme, der bruges til at bygge analytiske webapplikationer. Det er især godt for Python-dataloger, der ikke er særlig fortrolige med webudvikling.
Der er to grundlæggende fordele ved Dash:
Det giver dig mulighed for at bygge meget interaktive applikationer udelukkende med Python-kode.
Det gør det nemt at bruge kraften i Python-værktøjer til at manipulere data.
Dash-applikationer er webservere, der kører Flask og kommunikerer med JSON-pakker over HTTP-forespørgsler. Deres frontend renderer komponenter med React.js.
Apps, der er udviklet med Dash, renderes i webbrowseren og kan udrulles til servere. Det betyder også, at Dash-applikationer i sagens natur er cross-platform og mobilklare.
Dash-udviklere har adgang til den underliggende Flask-instans og alle dens konfigurerbare egenskaber. For at udvide mulighederne i Dash-applikationer kan udviklere også bruge det rige sæt af Flask-plugins.
Valg af en Python-webramme
Den rigtige ramme kan være alt, hvad du behøver for at udvikle et vellykket projekt. Vi håber virkelig, at du har fundet en interessant ramme i denne artikel. Vi har også en anden, de 17 bedste Python-webframeworks i 2017, hvis du er interesseret i at udforske flere muligheder.
Vi ville være glade for, hvis du besøgte vores virksomheds GitHub-side. Vores SteelKiwi udviklere forsøger ihærdigt at innovere i den teknologiske verden, og jo flere mennesker der er involveret, jo bedre.