Frameworks underlättar livet för utvecklare genom att erbjuda dem en struktur för applikationsutveckling. De automatiserar genomförandet av vanliga lösningar, minskar utvecklingstiden och låter utvecklarna fokusera på applikationslogik istället för rutinelement.
I den här artikeln delar vi med oss av en lista över de tolv bästa Python-webbramverken som kommer att vara användbara på din väg mot att bli en professionell backend-utvecklare och förbättra dina befintliga färdigheter.
Varför Python-ramverk? Stack Overflow har nyligen släppt resultaten av sin årliga utvecklarundersökning för 2019, där Python förklarades vara det snabbast växande stora programmeringsspråket.
De överlägset mest populära Pythonramverken är Django och Flask. Men det betyder inte att du ska bortse från potentialen hos andra ramverk. Var och en av dem har funktioner som kan passa perfekt för ditt webbprojekt.
Håll i minnet att de Pythonramverk som vi kommer att prata om här inte är listade i någon särskild ordning: vi har fokuserat på att visa vad du kan göra, i motsats till att tala om för dig vad du bör göra.
Några saker att tänka på
För det första, när du bestämmer dig för vilket ramverk du ska använda, ska du titta på storleken och komplexiteten hos ditt projekt. Om det du vill utveckla är ett stort system fyllt av funktioner och krav kan ett ramverk för hela stacken vara rätt val. Om din app är på den mindre och enklare sidan bör du förmodligen överväga en mikroram.
För det andra måste du kontrollera om ramverket du överväger kan skalas vertikalt och horisontellt. Detta är ett måste för projekt som ska köras på flera servrar, hantera stora mängder trafik och stödja tillägg av nya funktioner för att förbättra funktionaliteten.
När du väl har valt ett ramverk ska du kontakta ett team av utvecklare och be dem om information om den uppskattade kostnaden för att utveckla din app.
Du kan hitta information om typ och inriktning för vissa ramverk här. Ett slutgiltigt beslut bör dock komma från din egen förståelse av ditt projekt och de uppgifter du vill förenkla.
Hur som helst kan ramverk också stå i vägen för utvecklingen. När du väljer ett ramverk för hela stacken skriver du ofta under på en uppsättning begränsningar. Naturligtvis kan du hitta sätt att arbeta runt dem, men var försiktig så att du inte spenderar mer tid på att kämpa för din egen frihet än vad du skulle ha gjort om du skrivit en app i ren Python.
Fullstackramverk
Ett fullstackramverk eller ett företagsramverk är en allt-i-ett-lösning med bibliotek som är konfigurerade för att fungera sömlöst tillsammans. Det stöder utvecklingen av backend-tjänster, frontend-gränssnitt och databaser. Ett fullstack ramverk tillhandahåller allt som en utvecklare behöver för att bygga en applikation. Python erbjuder mer än ett fullstackramverk.
Django
Official Website | GitHub | PyPI | Awesome
GitHub Stars: 44 077 | GitHub Forks: 18 949
Django är ett kostnadsfritt open-source ramverk för fullstack Python. Det försöker inkludera alla nödvändiga funktioner som standard i stället för att erbjuda dem som separata bibliotek.
Några av de exemplariska funktionerna i Django är autentisering, URL-routing, mallmotor, object-relational mapper (ORM) och migrering av databasscheman (Django v.1.7+).
Dessa funktioner gör Django mycket skalbart, löjligt snabbt och extremt mångsidigt.
Django använder sin ORM för att mappa objekt till databastabeller. Samma kod fungerar med olika databaser och är inte svår att överföra från en databas till en annan. De viktigaste databaserna som Django arbetar med är PostgreSQL, MySQL, SQLite och Oracle, men med drivrutiner från tredje part kan du även använda andra.
Med Django kan du skapa alla webbapplikationer, från småskaliga projekt till komplexa webbplatser. Tack vare sin flexibilitet används Django också för att skapa MVP:er, vilket gör det möjligt för nystartade företag att optimera sin tid och budget.
Djangos användarbas förväntas växa, eftersom många utvecklare ser detta ramverk som det bästa valet för framväxande tekniker som maskininlärning. Dessutom planerar Django-gemenskapen att under 2020 släppa fler bibliotek för att möta den växande efterfrågan.
Här på SteelKiwi använder vi Django som vårt primära ramverk för backend-utveckling. Om du vill se de fantastiska appar som vi redan har utvecklat med Django kan du besöka vår projektsida.
Pyramid
Official Website | GitHub | PyPI | Awesome
GitHub Stars: 3 215 | GitHub Forks: 866
Pyramid är en öppen källkod – och det andra anmärkningsvärda – Python-baserade ramverket för webbprogram. Dess mål är att göra så mycket som möjligt med minimal komplexitet. Pyramid körs på Python 3 och håller jämna steg med de tekniska förbättringarna. Pyramid 1.10 är den aktuella versionen av ramverket och är den tionde uppdateringen sedan 2010.
Den mest slående egenskapen hos Pyramid är dess förmåga att fungera bra med både små och stora applikationer. Några av Pyramids fantastiska funktioner är bland annat:
- Applikationer med en enda fil
- URL-generering
- Utvidglig konfiguration
- Alltomfattande templating och tillgångsspecifikationer
- Flexibel autentisering och auktorisering
- Testning, support, och omfattande datadokumentation
- Visa predikat och många per-route-vyer
- Funktionsdekoratorer
- Predikat
- Renderers
Med Pyramid kan en utvecklare bestämma över mallspråket, genereringsbiblioteken och databaslagret.
Pyramid är en aktiv gemenskap och har många nya versioner. Utvecklare kan följa ramverkets framsteg genom att gå med i den officiella IRC-kanalen eller gå med i Google- och Twittergrupper.
TurboGears
Official Website | GitHub | PyPI
GitHub Stars: 654 | GitHub Forks: 65
TurboGears är ett datadrivet ramverk för fullständiga webbprogram med öppen källkod. Det bygger på massor av middleware och många bibliotek och var ursprungligen skapat för att kombinera de bästa komponenterna från andra Pythonramverk.
TurboGears låter dig snabbt utveckla utbyggbara datadrivna webbapplikationer. Det levereras med en användarvänlig templatingmotor och en kraftfull och flexibel ORM. Förutom bra mallsystem som underlättar livet för designers erbjuder TurboGears mycket flexibilitet, starkt stöd för aggregat, en kraftfull ORM och återanvändbara snippets.
Några av TurboGears’ utmärkande funktioner är bland annat:
- Stöd för flera databaser
- MVC-stilarkitektur
- Stöd för SQLObject och SQLAlchemy
- Kid och Genshi ingår i föredragna mallspråk
- Validering med FormEncode
- Pylons som webbserver
- ToscaWidgets, ett programbibliotek som förenklar samordningen av frontenddesign och serverutveckling
- PasteScript-mallar
- Servrar som baseras på WSGI och som är vända mot fronten (Paste HTTP-server, CherryPy WSGI/HTTP-server, osv.)
- Kommandoradsverktyg
- Integrering av JavaScript-biblioteket MochiKit
- Alla funktioner implementeras som funktionsdekoratorer
När det gäller framtiden för TurboGears arbetar gemenskapen för närvarande med att förbättra ramverkets kapacitet och övergripande stabilitet och är på väg att släppa den ”minimala koden”. Denna kod kallas också för en mikroram eller en avskalad version av TurboGears. Den minimala koden kommer att hjälpa utvecklare att bygga appar snabbare, vilket sparar pengar och tid.
Web2py
Official Website | GitHub | PyPI
GitHub Stars: 1 794 | GitHub Forks: 818
Web2py är ett skalbart ramverk för fullstack-Python med öppen källkod. Det är mycket kraftfullt när det gäller hantering av data. Web2py erbjöds ursprungligen som ett undervisningsverktyg med fokus på användarvänlighet. Detta förklarar varför det inte finns några konfigurationsfiler på projektnivå.
Vad som är bra med Web2py är dock att det levereras med ett eget webbaserat IDE som bland annat innehåller en kodredigerare, felsökare och en-klicksdistribution.
Andra värdefulla Web2py-funktioner inkluderar:
- Inga krav för installation och konfiguration
- Förmåga att köra på Windows, Mac, Linux/Unix, Google App Engine, Amazon EC2 och alla webbhotell som stöder antingen Python 2.5-2.7 eller Java+Python
- Läsbarhet för flera protokoll
- Datasäkerhet som förhindrar sårbarheter som cross-site scripting, injektionsfel och skadlig filkörning
- Framgångsrik användning av metoder för programvaruteknik, vilket gör att koden är lätt att läsa och underhålla
- Felsökning, grundlig felloggning och biljettsystem
- Rollbaserad åtkomstkontroll
- Stöd för internationalisering
- Bakåtkompatibilitet som säkerställer användarorienterad utveckling utan att man behöver förlora banden med tidigare versioner
Ett biljettsystem är den viktigaste funktionen i Web2py; Det utfärdar biljetter när fel uppstår. På så sätt kan användarna spåra fel och deras status.
Trots alla dessa fördelar är Web2pys community mindre än Pyramids eller Djangos. Det är inte många utvecklare som använder den. Detta innebär att chanserna att få support är mindre. Dessutom är den officiella sändlistan inte särskilt aktiv.
Mikroramverk
En mikroramverk, eller ett minimalistiskt ramverk för webbapplikationer, saknar de flesta funktionaliteterna hos ett fullfjädrade ramverk, t.ex. en webbmallmotor, autentiseringsfunktionalitet, konton, auktorisering, inmatningsvalidering och inmatningssanering. En mikroram försöker tillhandahålla endast de komponenter som krävs för att bygga en applikation. Den kan också fokusera på att tillhandahålla den nödvändiga funktionaliteten för en viss sfär.
Flask
Official Website | GitHub | PyPI | Awesome
Github Stars: 46 475 | GitHub Forks: 12 921
Flask är ett ramverk för Python som är tillgängligt under BSD-licensen. Det har inspirerats av Sinatra Ruby-ramverket. Flask är beroende av verktygslådan Werkzeug WSGI och Jinja2-mallen.
Den huvudsakliga idén bakom Flask är att hjälpa till att bygga en solid grund för webbapplikationer. Därifrån kan du använda alla de tillägg som du kan behöva. Flask väljs för alla projekt. Faktum är att det är ett standardval för alla webbprojekt som inte passar Django.
Flasks lätta och modulära design gör att den lätt kan anpassas till utvecklarnas behov. Den innehåller ett antal användbara out-of-the-box-funktioner:
- Inbyggd utvecklingsserver och en snabb felsökare
- Integrerat stöd för enhetstestning
- RESTful request dispatching
- Jinja2 templating
- Stöd för säkra cookies (sessioner på klientens sida)
- WSGI 1.0-kompatibilitet
- Unicode-baserad
- Möjlighet att koppla in vilken ORM som helst
- HTTP-förfrågningshantering
Sedan lanseringen 2010 har Flask uppdaterats 27 gånger. Hittills är det fortfarande det mest växande Pythonramverket. Många Flask-tillägg stöds dock inte längre: dokumentationen är föråldrad och de utvecklas inte längre. Om du stöter på detta måste du googla för att hitta ett aktivt stött plug-in med liknande funktionalitet.
Flask
Official Website | GitHub | PyPI
GitHub Stars: 6 348 | GitHub Forks: 1 245
Bottle är en mikroramverk. Ursprungligen tänkt för att bygga API:er, Bottle implementerar allt i en enda källfil. Den har inga beroenden förutom Pythons standardbibliotek. Genom att koda med Bottle kommer du närmare metallen än genom att koda med någon fullskalig ram. Bottle passar dock bara om du skapar en mycket liten applikation med högst 500 rader kod och inga särskilda krav.
Dess standardfunktioner inkluderar routing, templating, verktyg och en grundläggande abstraktion över WSGI-standarden.
- Routing – stöder förfrågningar till mappning av funktionsanrop, vilket gör det möjligt att uppnå rena och dynamiska webbadresser
- Mallar – en snabb och Pythonisk mallmotor från början tillsammans med fullt stöd för mako, jinja2 och cheetah
- Verktyg – bekväm åtkomst till formulärdata, filuppladdning, cookies, headers, och andra HTTP-relaterade metadata
- Server – en inbyggd HTTP-utvecklingsserver med stöd för fapws3, bjoern, GAE, СherryPy och alla andra WSGI-kapabla HTTP-servrar
Sedan 2009 har Bottle uppdaterats 73 gånger, och nu är det en perfekt lösning för att ta fram prototyper, lära sig organisera webbramverk och bygga enkla personliga appar.
Alla bidrag till Bottle-gemenskapen accepteras via GitHub. Användare kan också ansluta sig till Bottle mailinglista och blogg och följa de senaste ändringarna på Twitter. Om du letar efter ytterligare ett diskussionsforum kan du gå med i en freenode-chatt.
CherryPy
Officiella webbplatsen | GitHub | PyPI
GitHub Stars: 1 057 | GitHub Forks: 259
CherryPy är ett minimalistiskt webbramverk med öppen källkod. Det gör att det inte skiljer sig från att bygga webbprogram i Python från att bygga vilket annat objektorienterat program som helst.
CherryPy är skapat för att kunna utvidgas. Ramverket erbjuder till och med mekanismer för krokpunkter och tillägg. en CherryPy-driven webbapplikation är till exempel en fristående Python-applikation som inbäddar sin egen multitrådade webbserver. Med en egen webbserver omfattar utvidgningspunkterna funktioner utanför begäran-svarscykeln, vilket ökar CherryPys utvidgningsbarhet.
En CherryPy-driven webbapplikation är faktiskt en fristående Python-applikation som bäddar in en egen flertrådig webbserver. CherryPy-applikationer kan köras på alla operativsystem som har stöd för Python (Windows, macOS, Linux osv.). De kan distribueras överallt där du kan köra en vanlig Python-app. Du behöver inte Apache för CherryPy-appar, men du kan köra en CherryPy-app bakom Apache lika bra som du kan köra den bakom Lighttpd eller IIS.
CherryPy är inte ett särskilt begränsande ramverk, eftersom du kan använda vilken typ av teknik som helst för templating, dataåtkomst och så vidare. Det kan dock fortfarande hantera sessioner, statik, cookies, filuppladdningar och allt annat som ett ramverk för webben vanligtvis kan hantera.
Några av CherryPys standardfunktioner är:
- En HTTP/1.1-kompatibel WSGI trådpoolad webbserver
- En enkelhet att köra flera HTTP-servrar samtidigt
- Ett kraftfullt konfigurationssystem
- Ett flexibelt instickssystem
- Out-of-the-box-verktyg för caching, kodning, sessioner, autentisering, statiskt innehåll och så vidare
- Inbyggt stöd för profilering, täckningsgrad och testning
- Förmåga att köra på Python 2.7+, Python 3.1+, PyPy, Jython och Android
Trots alla funktioner och fördelar anser många utvecklare att CherryPys dokumentation kan förbättras. Dessutom skulle CherryPy kunna vara åtminstone lite enklare att använda.
Som de flesta andra ramverk har CherryPy ett community bakom sig som ger hjälp till nybörjare och avancerade utvecklare. CherryPy har en sändlista och föreslår att utvecklare går med i ramverkets IRC-kanal eller Gitter- och Google-grupper.
Falcon
Official Website | GitHub | PyPI
GitHub Stars: 1 057 | GitHub Forks: 259