Top 13 Python Web Frameworks, som du skal lære i 2020

Frameworks gør livet lettere for udviklere ved at give dem en struktur for applikationsudvikling. De automatiserer implementeringen af fælles løsninger, reducerer udviklingstiden og giver udviklerne mulighed for at fokusere på applikationslogik i stedet for rutineelementer.

I denne artikel deler vi en liste over de tolv bedste Python-webframeworks, som vil være nyttige på din vej til at blive en professionel backend-udvikler og forbedre dine eksisterende færdigheder.

Hvorfor Python frameworks? Stack Overflow har for nylig offentliggjort resultaterne af deres årlige udviklerundersøgelse for 2019, som erklærede Python for det hurtigst voksende store programmeringssprog.

Kilde: stackoverflow.blog

Langt de mest populære Python-frameworks er Django og Flask. Men det betyder ikke, at du skal se bort fra potentialet i andre frameworks. Hver af dem besidder funktioner, der kan være et perfekt match til dit webprojekt.

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%
  • Reduceret fejl med 40%
  • 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.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.