Top 13 Python Web Frameworks om te leren in 2020

Frameworks maken het leven van ontwikkelaars makkelijker door hen een structuur te bieden voor de ontwikkeling van applicaties. Ze automatiseren de implementatie van veelvoorkomende oplossingen, verkorten de ontwikkeltijd en stellen ontwikkelaars in staat zich te concentreren op applicatielogica in plaats van routine-elementen.

In dit artikel delen we een lijst met de top twaalf Python-webframeworks die nuttig zullen zijn op uw weg om een professionele backend-ontwikkelaar te worden en uw bestaande vaardigheden te verbeteren.

Waarom Python-frameworks? Stack Overflow heeft onlangs de resultaten van hun jaarlijkse ontwikkelaarsenquête voor 2019 vrijgegeven, waarin Python werd uitgeroepen tot de snelst groeiende grote programmeertaal.

bron: stackoverflow.blog

Verreweg de populairste Python-frameworks zijn Django en Flask. Maar dat betekent niet dat je het potentieel van andere frameworks moet afwijzen. Elk van hen beschikt over functies die een perfecte match voor uw webproject kunnen zijn.

bron: jetbrains.com

Bedenk dat de Python-frameworks die we hier bespreken niet in een bepaalde volgorde staan: we hebben ons gericht op het laten zien wat u kunt doen in plaats van u te vertellen wat u moet doen.

Enkele dingen om te overwegen

Bij de beslissing welk framework u moet gebruiken, moet u ten eerste kijken naar de omvang en complexiteit van uw project. Als u een groot systeem wilt ontwikkelen, vol met functies en vereisten, is een full-stack framework misschien de juiste keuze. Als uw app aan de kleinere en eenvoudigere kant is, moet u waarschijnlijk een microframework overwegen.

Ten tweede moet u controleren of het framework dat u overweegt, verticaal en horizontaal kan schalen. Dit is een must voor projecten die op meerdere servers moeten draaien, enorme hoeveelheden verkeer moeten verwerken en de toevoeging van nieuwe functies moeten ondersteunen om de functionaliteit te verbeteren.

Zodra u een framework hebt gekozen, neemt u contact op met een team van ontwikkelaars en vraagt u hen om informatie over de geschatte kosten om uw app te ontwikkelen.

U kunt hier informatie vinden over het type en de focus van sommige frameworks. Een uiteindelijke beslissing moet echter voortkomen uit uw eigen begrip van uw project en de taken die u wilt vereenvoudigen.

Frameworks kunnen echter ook in de weg staan van de ontwikkeling. Als je een full-stack framework kiest, ga je vaak akkoord met een aantal beperkingen. Natuurlijk kunt u manieren vinden om ze te omzeilen, maar pas op dat u niet meer tijd besteedt aan het vechten voor uw eigen vrijheid dan u zou hebben gedaan met het schrijven van een app in pure Python.

Full-stack frameworks

Een full-stack framework of een enterprise framework is een alles-in-één-oplossing met bibliotheken die zijn geconfigureerd om naadloos samen te werken. Het ondersteunt de ontwikkeling van backend services, frontend interfaces, en databases. Een full-stack framework biedt alles wat een ontwikkelaar nodig heeft voor het bouwen van een applicatie. Python biedt meer dan een full-stack framework.

Django

Officiële Website | GitHub | PyPI | Awesome

GitHub Sterren: 44.077 | GitHub Vorken: 18.949

Django is een gratis open-source full-stack Python framework. Het probeert alle noodzakelijke functies standaard in te bouwen in plaats van ze als aparte bibliotheken aan te bieden.

De belangrijkste functies van Django zijn authenticatie, URL-routing, template engine, object-relational mapper (ORM), en databaseschema-migraties (Django v.1.7+).

Deze functies maken Django zeer schaalbaar, belachelijk snel, en extreem veelzijdig.

Django gebruikt zijn ORM om objecten aan databasetabellen toe te wijzen. Dezelfde code werkt met verschillende databases en is niet moeilijk over te zetten van de ene database naar de andere. De belangrijkste databases waar Django mee werkt zijn PostgreSQL, MySQL, SQLite en Oracle, maar met drivers van derden kunt u ook andere databases gebruiken.

Met Django kunt u elke webapplicatie maken, van kleinschalige projecten tot complexe websites. Dankzij de flexibiliteit wordt Django ook gebruikt voor het maken van MVP’s, waardoor startups hun tijd en budget kunnen optimaliseren.

Django’s gebruikersbasis zal naar verwachting groeien, omdat veel ontwikkelaars dit framework zien als de beste keuze voor opkomende technologieën, zoals machine learning. Ook is de Django gemeenschap van plan om in 2020 meer bibliotheken vrij te geven om aan de groeiende vraag te voldoen.

Hier bij SteelKiwi gebruiken we Django als ons primaire framework voor backend ontwikkeling. Als u de geweldige apps wilt zien die we al hebben ontwikkeld met Django, bezoek dan onze Projecten pagina.

Pyramid

Officiële Website | GitHub | PyPI | Awesome

GitHub Sterren: 3.215 | GitHub Vorken: 866

Pyramid is een open-source – en het tweede noemenswaardige – op Python gebaseerde raamwerk voor webtoepassingen. Het doel ervan is om zo veel mogelijk te doen met een minimum aan complexiteit. Pyramide draait op Python 3 en houdt gelijke tred met technologische verbeteringen. Pyramid 1.10 is de huidige versie van het framework en is de tiende update sinds 2010.

Het meest opvallende kenmerk van Pyramid is zijn vermogen om goed te werken met zowel kleine als grote applicaties. Enkele van Pyramid’s geweldige functies zijn onder andere:

  • Single-file applicaties
  • URL generatie
  • Uitbreidbare configuratie
  • Heldere templating en asset specificaties
  • Flexibele authenticatie en autorisatie
  • Testen, ondersteuning, en uitgebreide datadocumentatie
  • View predicates en veel per-route views
  • Function decorators
  • Predicates
  • Renderers

Met Pyramid kan een ontwikkelaar zelf beslissen over de templating taal, generatie bibliotheken, en database laag.

De Pyramid gemeenschap is actief en kent vele releases. Ontwikkelaars kunnen de voortgang van het framework volgen door lid te worden van het officiële IRC kanaal of lid te worden van Google en Twitter groepen.

TurboGears

Officiële Website | GitHub | PyPI

GitHub Stars: 654 | GitHub Forks: 65

TurboGears is een open-source, data-gedreven full-stack web applicatie framework. Het is gebouwd op veel middleware en veel bibliotheken en is in eerste instantie gemaakt om de beste componenten van andere Python frameworks te combineren.

TurboGears stelt je in staat om snel uitbreidbare data-driven web applicaties te ontwikkelen. Het wordt geleverd met een gebruiksvriendelijke templating engine en een krachtige en flexibele ORM. Naast geweldige templating systemen die het leven van ontwerpers makkelijker maken, biedt TurboGears veel flexibiliteit, sterke ondersteuning van aggregaten, een krachtige ORM, en herbruikbare snippets.

Enkele van de onderscheidende kenmerken van TurboGears zijn:

  • Multi-database ondersteuning
  • MVC-stijl architectuur
  • Support voor SQLObject en SQLAlchemy
  • Kid en Genshi opgenomen in voorkeur templating talen
  • Validatie met FormEncode
  • Pylons als een web server
  • ToscaWidgets, een applicatiebibliotheek die de coördinatie van frontend-ontwerp en serverontwikkeling vereenvoudigt
  • PasteScript-sjablonen
  • Front-facing WSGI-gebaseerde servers (Paste HTTP-server, CherryPy WSGI/HTTP-server, enz.)
  • Command-line tools
  • MochiKit JavaScript library integration
  • Alle functies geïmplementeerd als functie decorators

Voor wat betreft de toekomst van TurboGears, de gemeenschap werkt momenteel aan het verbeteren van de mogelijkheden van het framework en de algehele stabiliteit en staan op het punt om de “minimale code” vrij te geven. Deze code wordt ook wel aangeduid als een microframework, of een uitgeklede versie van TurboGears. De minimale code zal ontwikkelaars helpen sneller apps te bouwen, wat geld en tijd bespaart.

Web2py

Officiële Website | GitHub | PyPI

GitHub Stars: 1.794 | GitHub Forks: 818

Web2py is een schaalbaar open-source full-stack Python framework. Het is zeer krachtig als het gaat om het verwerken van gegevens. Web2py werd oorspronkelijk aangeboden als leermiddel met de nadruk op gebruiksgemak. Dit verklaart waarom er geen configuratiebestanden op projectniveau zijn.

Wat echter geweldig is aan Web2py, is dat het wordt geleverd met zijn eigen webgebaseerde IDE, die onder andere een code-editor, debugger en implementatie met één klik bevat.

Andere waardevolle Web2py-kenmerken zijn:

  • Geen vereisten voor installatie en configuratie
  • Kan draaien op Windows, Mac, Linux/Unix, Google App Engine, Amazon EC2, en elke web hosting die ondersteuning biedt voor Python 2.5-2.7 of Java+Python ondersteunt
  • Readerbaarheid van meerdere protocollen
  • Gegevensbeveiliging die kwetsbaarheden zoals cross-site scripting, injectiefouten en kwaadaardige bestandsuitvoering voorkomt
  • Succesvolle toepassing van software engineering-praktijken, waardoor code gemakkelijk te lezen en te onderhouden is
  • Foutopsporing, grondige error logging en ticketing
  • Role-based access control
  • Support for internationalization
  • Backward compatibility die gebruikersgeoriënteerde vooruitgang verzekert zonder de noodzaak om banden met eerdere versies te verliezen

Een ticketing systeem is de belangrijkste eigenschap van Web2py; Het geeft tickets uit wanneer er fouten optreden. Op deze manier kunnen gebruikers fouten en hun status bijhouden.

Ondanks al deze voordelen is de Web2py gemeenschap kleiner dan die van Pyramid of Django. Niet veel ontwikkelaars gebruiken het. Dit betekent dat de kans op ondersteuning lager is. Bovendien is de officiële mailinglijst niet erg actief.

Microframeworks

Een microframework, of een minimalistisch web applicatie framework, mist de meeste functionaliteit van een volwaardig framework, zoals een web template engine, authenticatie functionaliteit, accounts, autorisatie, input validatie, en input sanitation. Een microframework probeert alleen de componentenset te bieden die nodig is voor het bouwen van een applicatie. Het kan zich ook richten op het leveren van de benodigde functionaliteit voor één bepaald gebied.

Flask

Officiële Website | GitHub | PyPI | Awesome

Github Sterren: 46.475 | GitHub Vorken: 12.921

Flask is een Python framework dat beschikbaar is onder de BSD-licentie. Het is geïnspireerd op het Sinatra Ruby framework. Flask is afhankelijk van de Werkzeug WSGI toolkit en Jinja2 template.

Het belangrijkste idee achter Flask is om een solide basis voor webapplicaties te bouwen. Van daaruit kunt u alle uitbreidingen gebruiken die u nodig zou kunnen hebben. Flask wordt gekozen voor alle projecten. In feite is het een standaard keuze voor elk webproject dat geen match is voor Django.

Flask’s lichtgewicht en modulair ontwerp maakt het gemakkelijk aanpasbaar aan de behoeften van ontwikkelaars. Het bevat een aantal handige out-of-the-box functies:

  • Built-in development server en een snelle debugger
  • Geïntegreerde ondersteuning voor unit testing
  • RESTful request dispatching
  • Jinja2 templating
  • Secure cookies support (client-side sessies)
  • WSGI 1.0 compliance
  • Unicode-based
  • Mogelijkheid om een ORM
  • HTTP request handling

Sinds de lancering in 2010, is Flask 27 keer bijgewerkt. Tot op heden blijft het het snelst groeiende Python framework. Echter, veel Flask extensies worden niet langer ondersteund: de documentatie is verouderd en ze worden niet langer ontwikkeld. Als je hier tegenaan loopt, zul je moeten Googlen om een actief ondersteunde plug-in met vergelijkbare functionaliteit te vinden.

Fles

Officiële Website | GitHub | PyPI

GitHub Sterren: 6.348 | GitHub Vorken: 1.245

Bottle is een microframework. Oorspronkelijk bedoeld voor het bouwen van API’s, implementeert Bottle alles in een enkel bronbestand. Het heeft geen andere afhankelijkheden dan de standaardbibliotheek van Python. Coderen met Bottle brengt je dichter bij het metaal dan coderen met een full-stack framework. Echter, Bottle is alleen een match als je een zeer kleine applicatie maakt met hooguit 500 regels code en geen speciale eisen.

De standaard functies omvatten routing, templating, utilities, en een basis abstractie over de WSGI standaard.

  • Routing – ondersteunt requests to function-call mapping, waarmee je schone en dynamische URL’s kunt maken
  • Templates – een snelle en Pythonische template engine out of the box samen met volledige ondersteuning voor mako, jinja2, en cheetah
  • Utilities – comfortabele toegang tot formulier data, file uploads, cookies, headers, en andere HTTP-gerelateerde metadata
  • Server – een ingebouwde HTTP-ontwikkelingsserver die fapws3, bjoern, GAE, СherryPy, en elke andere WSGI-capable HTTP-server ondersteunt

Sinds 2009, is Bottle 73 keer bijgewerkt, en nu is het een perfecte oplossing voor prototyping, het leren van de organisatie van web frameworks, en het bouwen van eenvoudige persoonlijke apps.

Bijdragen aan de Bottle-gemeenschap worden geaccepteerd via GitHub. Gebruikers kunnen ook lid worden van de Bottle mailinglijst en blog en de laatste veranderingen volgen op Twitter. Als u op zoek bent naar een extra forum voor discussie, neem dan deel aan een freenode chat.

CherryPy

Officiële website | GitHub | PyPI

GitHub Sterren: 1.057 | GitHub Vorken: 259

CherryPy is een open-source, minimalistisch web framework. Het maakt het bouwen van Python-webtoepassingen niet anders dan het bouwen van elk ander objectgeoriënteerd programma.

CherryPy is gemaakt om uitbreidbaar te zijn. Het framework biedt zelfs mechanismen voor hook points en extensies.Bijvoorbeeld, een CherryPy-aangedreven web app is een standalone Python-toepassing die zijn eigen multi-threaded webserver insluit. Met zijn eigen webserver omvatten de uitbreidingspunten functies buiten de request-response cyclus, waardoor het niveau van CherryPy’s uitbreidbaarheid wordt vergroot.

In feite is een CherryPy-aangedreven web-app een standalone Python-toepassing die zijn eigen multi-threaded webserver insluit. CherryPy apps draaien op elk besturingssysteem dat Python ondersteunt (Windows, macOS, Linux, etc.). Ze kunnen overal worden ingezet waar u een gewone Python-app kunt draaien. U hebt Apache niet nodig voor CherryPy-apps, maar u kunt een CherryPy-app net zo goed achter Apache draaien als achter Lighttpd of IIS.

CherryPy is geen erg beperkend framework, omdat het u toestaat om elk type technologie te gebruiken voor templating, gegevenstoegang, enzovoort. Het is echter nog steeds in staat om sessies, statics, cookies, bestandsuploads, en al het andere dat een web framework typisch kan afhandelen.

Enkele van de standaard CherryPy functies omvatten:

  • Een HTTP/1.1-compliant WSGI thread-pooled webserver
  • Makkelijkheid van het draaien van meerdere HTTP-servers tegelijk
  • Een krachtig configuratiesysteem
  • Een flexibel plugin-systeem
  • Out-of-the-box tools voor caching, encoding, sessies, authenticatie, statische content, enzovoort
  • Ingebouwde ondersteuning voor profiling, coverage, en testing
  • Mogelijkheid om te draaien op Python 2.1+, Python 3.1+, PyPy, Jython, en Android

Ondanks alle functies en voordelen, vinden veel ontwikkelaars dat CherryP.7+, Python 3.1+, PyPy, Jython, en Android

Ondanks alle functies en voordelen, vinden veel ontwikkelaars dat CherryPy’s documentatie wat verbetering kan gebruiken. Plus, CherryPy zou op zijn minst een beetje gemakkelijker te gebruiken kunnen zijn.

Zoals de meeste andere frameworks, heeft CherryPy een gemeenschap achter zich die hulp biedt aan beginners en gevorderde ontwikkelaars. CherryPy heeft een mailinglijst en suggereert ontwikkelaars zich aan te sluiten bij het IRC-kanaal van het framework of Gitter en Google-groepen.

Falcon

Officiële website | GitHub | PyPI

GitHub Stars: 1.057 | GitHub Forks: 259

Falcon is een bare-metal Python web API framework voor het bouwen van zeer snelle app backends. Het logo van het framework is een valk, wat symboliseert hoe snel Falcon werkt.

Dit framework stelt ontwikkelaars in staat om schonere ontwerpen te maken en handelt de meeste requests af. Falcon nooit beperkt ontwikkelaars in het kiezen van bibliotheken voor databases en autorisatie.

Andere waardevolle Falcon-functies:

  • 100% code coverage met een uitgebreide testsuite
  • Een sterk geoptimaliseerde codebase
  • Ufront exception handling
  • REST-geïnspireerde resourceklassen
  • URI-sjablonen voor intuïtieve routines
  • Eenvoudige toegang via verzoek- en antwoordklassen
  • DROGE verzoekverwerking via middleware componenten
  • Idiomatische HTTP-foutreacties
  • Unit-testing via WSGI-helpers

Falcon negeert nutteloze bewerkingen tijdens de ontwikkeling van een webframework. Ook geeft het keuzevrijheid: ontwikkelaars kunnen beslissingen nemen waarmee ze implementaties vrij kunnen tunen en aanpassen.

Twee andere voordelen die het vermelden waard zijn, zijn de beschikbaarheid van uitgebreide documentatie en een actieve community.

Hug

Officiële website | GitHub | PyPI

GitHub Sterren: 5.905 | GitHub Vorken: 347

Hug is een Python 3 API-ontwikkelingsraamwerk. Het is gemaakt om software engineers in staat te stellen een API eenmalig te ontwikkelen en deze vervolgens te hergebruiken wanneer dat nodig is. Het Hug-framework vereenvoudigt de ontwikkeling van API’s door verschillende interfaces aan te bieden. Dat is de belangrijkste reden waarom dit framework een van de snelste in Python 3 wordt genoemd.

De belangrijkste kenmerken van Hug:

  • Ondersteuning voor automatische documentatie
  • Annotatie-gestuurde validatie
  • Ingebouwd versiebeheer
  • Voldoet aan Cython
  • Kan worden gebruikt als Python-bibliotheek

Het Hug-framework bevat zo weinig mogelijk integraties en zo weinig mogelijk code, maar blijft functioneel en levert uitstekende prestaties. Bovendien groeit de Hug-gemeenschap momenteel. Dat is een teken dat er vraag is naar het framework en een bewijs dat wanneer er zich een probleem voordoet, een ontwikkelaar hulp kan vinden.

FastAPI

Officiële website |GitHub |PyPI

GitHub Sterren: 4.835| GitHub Vorken: 256

FastAPI is een modern, op Python gebaseerd framework. Het is oorspronkelijk ontworpen met het oog op gebruiksvriendelijkheid en een optimale ontwikkelingservaring. Tot op heden is FastAPI een van de snelste frameworks voor het bouwen van API’s met Python 3.6+.

Het framework heeft verschillende kenmerken overgenomen van Flask, waaronder de eenvoud. Het hele kader is gebouwd op Starlette en bevat de meeste van zijn functies (sjablonen, WebSockets, en GraphQL ondersteuning).

Het FastAPI framework biedt:

  • Verhoogde ontwikkelsnelheid met 200% tot 300%
  • Reductie van fouten met 40%
  • Minder tijd nodig voor debugging
  • Minimalisering van duplicatie van code
  • Automatische interactieve documentatie

FastAPI is niet nauw verbonden met een database. Het ondersteunt echter wel databases die u nodig hebt. Met FastAPI bent u vrij om uw project te structureren zoals u dat wilt en kunt u zelfs grotendeels dezelfde bestanden uit een van uw Flask-projecten gebruiken.

Het enige nadeel is de kleine community. Maar dat komt omdat FastAPI een relatief nieuw framework is.

Asynchrone frameworks

Een asynchroon framework is een relatief recent type Python framework. Het is een microframework dat ontwikkelaars in staat stelt een grote reeks gelijktijdige verbindingen af te handelen. Asynchrone frameworks gebruiken niet-blokkerende sockets en voeden zich met Python’s asyncio library.

Sanic

Official Website | GitHub | PyPI

GitHub Stars: 12,780 | GitHub Forks: 1.203

Sanic is een Python web framework gebouwd op uvloop en speciaal gemaakt voor snelle HTTP responses via asynchrone request handling.

Het draait op Python 3.5+. Sanic ondersteunt asynchrone request handlers, waardoor het compatibel is met Python 3.5’s async/await functies. Dit verhoogt de snelheid en biedt niet-blokkerende mogelijkheden.

Sonic wordt beschouwd als het asynchrone framework bij uitstek in de Python-wereld vanwege de routing, middleware, cookies, versiebeheer, statische bestanden, blueprints, op klassen gebaseerde weergaven en sockets. Het biedt echter geen database ondersteuning en templating.

In een benchmark test met één proces en 100 verbindingen, was Sanic in staat om 33.342 verzoeken per seconde af te handelen, met een gemiddelde latency van 2,96 ms.

Tornado

Officiële Website | GitHub | PyPI

GitHub Stars: 18.292 | GitHub Forks: 5,040

Tornado is een Python web framework en asynchrone netwerkbibliotheek die zich richt op snelheid en de mogelijkheid om grote hoeveelheden verkeer aan te kunnen. Het maakt gebruik van een niet-blokkerende netwerk-I/O en lost het C10k-probleem op (wat betekent dat het, indien goed geconfigureerd, 10.000+ gelijktijdige verbindingen aankan).

Dit maakt het een geweldige tool voor het bouwen van toepassingen die hoge prestaties en tienduizenden gelijktijdige gebruikers vereisen.

Tornado’s belangrijkste kenmerken zijn:

  • Ingebouwde ondersteuning voor gebruikersauthenticatie
  • Real-time diensten
  • Hoge kwaliteit prestaties
  • Python-gebaseerde web templating taal
  • Niet-blokkerende HTTP client
  • Implementatie van derde partij authenticatie en autorisatie schema’s (Google OpenID/OAuth, Facebook Login, Yahoo BBAuth, FriendFeed OpenID/OAuth, Twitter OAuth)
  • Ondersteuning voor vertaling en lokalisatie

In termen van populariteit, Tornado staat ergens tussen Django en Flask. Stel dat je iets wilt schrijven in Flask of Django vanwege hun functies en tools, maar je hebt ook veel betere prestaties nodig. In dat geval zou u Tornado moeten kiezen.

Other

Dash

Officiële Website | GitHub | PyPI | Awesome

GitHub Sterren: 9.856 | GitHub Vorken: 1.011

Dash is een open-source Python framework dat wordt gebruikt voor het bouwen van analytische webapplicaties. Het is vooral goed voor Python-datawetenschappers die niet erg vertrouwd zijn met webontwikkeling.

Er zijn twee basisvoordelen van Dash:

  • Het stelt u in staat om zeer interactieve toepassingen te bouwen met alleen Python-code.
  • Het maakt het eenvoudig om de kracht van Python-tools te gebruiken voor het manipuleren van gegevens.

Dash-toepassingen zijn webservers die Flask draaien en communiceren met JSON-pakketten via HTTP-verzoeken. Hun frontend rendert componenten met React.js.

Apps die zijn ontwikkeld met Dash worden gerenderd in de webbrowser en kunnen worden uitgerold naar servers. Dit betekent ook dat Dash-applicaties inherent cross-platform en mobiel-ready zijn.

Dash-ontwikkelaars hebben toegang tot de onderliggende Flask-instantie en al zijn configureerbare eigenschappen. Om de mogelijkheden van Dash applicaties uit te breiden, kunnen ontwikkelaars ook gebruik maken van de rijke set van Flask Plugins.

Het kiezen van een Python web framework

Het juiste framework kan alles zijn wat u nodig heeft om een succesvol project te ontwikkelen. We hopen echt dat je een interessant framework hebt gevonden in dit artikel. We hebben ook een andere, de 17 beste Python-webframeworks van 2017, als je geïnteresseerd bent in het verkennen van meer opties.

We zouden het leuk vinden als je onze zakelijke GitHub-pagina bezoekt. Onze SteelKiwi-ontwikkelaars doen hun best om te innoveren in de wereld van tech, en hoe meer mensen betrokken raken, hoe beter.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.