9 bedste Python-rammer til opbygning af små til virksomhedsapplikationer

Python er både et sjovt legetøj og en skræmmende flammekaster. Det samme gælder, hvad du kan gøre med Python.

Python er elsket af både hobbyfolk, videnskabsmænd og arkitekter.

Det er pokkers nemt at komme i gang med, har abstraktioner af højere orden og metaprogrammeringsevner til at bygge store og komplekse systemer og har masser af biblioteker til stort set alt. Selvfølgelig er der begrænsninger, når det kommer til samtidighed og stærk skrivning, men du kan omgå dem.

I denne artikel vil vi kaste et kig på nogle af de bedste Python-frameworks, når det kommer til at bygge store og små webapplikationer.

Django

Det Django framework har bestået tidens prøve go-to web frameworket for Python-fællesskabet. Hvis du overfaldt en Python-udvikler i søvne og tvang dem til at bygge en webapplikation med våben, ville de automatisk række ud efter Django, som en Rubyist vil nå til Rails.

Og det er der en god grund til. Django er, som slogan siger, “en webramme for perfektionister med deadlines.” Det er det, der kaldes en “batterier inkluderet”-ramme (meget ligesom Python er et batteri-inkluderet sprog), som giver al almindelig funktionalitet ud af æsken.

Med disse funktioner indbygget skærer Django massivt ned på udviklingstiden:

  • En handy og behagelig ORM, med migreringer oprettet og anvendt automatisk af rammen.
  • Stillads til automatisk generering af admin panel baseret på dine modeller.
  • Support til cookies, sessioner, middleware, skabeloner osv.
  • Sikkerhedsfunktioner som XSS-forebyggelse, CRSF-forebyggelse osv. anvendes automatisk.
  • Virker med stort set alle databaser derude (det er nemt at finde adaptere, hvor der ikke findes officiel support)
  • Førsteklasses support til geografiske data og rumlige forespørgsler dog GeoDjango

Og meget, meget mere. Det er tilstrækkeligt at sige, at Django er et fuldt udbygget, venligt web-framework.

Er Django noget for dig?

Selvfølgelig ja.

Django giver fremragende mening til alle use cases, uanset om det er hurtig prototyping eller planlægning af en virksomhedsapplikation. Den eneste ru kant, du vil støde på, er rammens struktur. Da Django bøjer sig bagud for at gøre udviklingen hurtig og nem for dig, påtvinger den udvikleren sin struktur (et koncept kaldet “konvention over konfiguration”), hvilket du måske ikke er enig i. For eksempel, hvis du vil erstatte Django ORM med noget andet (f.eks. SQL Alchemy), skal du være forberedt på overraskelser.

Interesseret i at blive fuld stack-udvikler med Django og Python? – Tjek det her fantastisk online kursus.

Kolbe

Mens Django optager næsten al mindshare i Python-webudvikling, Kolbe er en stærk kandidat.

I modsætning til Django er Flask et “mikro-rammeværk”, hvilket betyder, at det fokuserer på at få nogle få, absolut minimum ting rigtige, og overlader resten til dig. Dette “resten er op til dig” kan være en kilde til frustration eller glæde, afhængigt af hvad dine mål er. For dem, der ved, hvad de laver, og som kærligt ønsker at lave deres webapplikationer ved at vælge komponenter efter eget valg, er Flask en gave fra Gud.

Flask tilbyder følgende funktioner:

  • Routing, skabeloner, sessionsstyring og andre nyttige funktioner.
  • Fuld support til enhedstestning
  • En minimal, pluggbar arkitektur
  • Førsteklasses REST-understøttelse
  • Understøttelse af Blueprints, Flasks unikke bud på arkitektur til små webapplikationer
  • Vælg dine pakker til ORM, migreringer osv.
  • Fleksibel applikationsstruktur – placer dine filer, hvor de giver mest mening for dig
  • Statisk filvisning
  • WGSI-kompatibel

Er Flask noget for dig?

Som allerede sagt er Flask en minimal webramme, med alt opdelt i individuelle komponenter, som du kan bytte ud. Hvis du har travlt med at bygge en prototype, vil du bruge meget tid på at tage trivielle beslutninger om databasen, mappestrukturen, routing osv., som kan vise sig at være kontraproduktive. Flask fungerer bedst, når du er i gang med et stabilt, seriøst projekt af mellem- til storskala, især REST API’er.

  Ret uventet fejl forhindrer dig i at anvende egenskaber

Flaske

Hvis du syntes, at Flasks tilgang ikke var minimal nok, og at du stadig gerne vil have mere kontrol, så sig hej til Flaske.

Flaske strimler endnu mere ud, til det punkt, hvor den eneste afhængighed er Python-standardbiblioteket. Det betyder, at ingen pip-installere dette eller pip-installere det, selvom du højst sandsynligt bliver nødt til det inden længe. Her er grunden til, at flaske skiller sig ud for nogle mennesker:

  • Enkelt-fil implementering. Ja, hele din applikation findes i en enkelt “.py”-fil.
  • Ingen eksterne afhængigheder. Hvis du har den rigtige Python-version installeret, er du godt i gang.
  • Leverer sin skabelonmotor, som kan skiftes ud med Jinja2, Mako eller Cheetah.
  • Understøttelse af formularer, overskrifter, cookies og filuploads.
  • Indbygget webserver, som nemt kan udskiftes.

Er Bottle noget for dig?

Hvis du laver en virkelig lille app (f.eks. mindre end 500 linjer kode) uden særlige krav, kan Bottle give meget mening for dig. Det er en fuldstændig no-nonsense tilgang til at skabe webapps, men i praksis vil du opdage, at du er mere hæmmet end hjulpet af Bottle. Årsagen er, at den virkelige verden altid ændrer sig, og før du ved af det. Nye krav vil blive droppet på dit hoved. På det tidspunkt ville det blive en opgave at lægge alt i en enkelt fil.

Desuden, hvis du tror, ​​at flaske og kolbe er næsten ens, har du ret. Forslag af sammenlægning de to går tilbage til 2012, og selv Armin, skaberen af ​​Flask, er enig i det. Marcel, skaberen af ​​Bottle, opretholder imidlertid en streng ideologisk skelnen på grund af enkeltfilstilgangen og insisterer på, at de to forbliver adskilte.

Zope

Zope er kompliceret at forklare, men jeg prøver. Ja, det er en webramme, der kan bruges til at bygge store eller små applikationer, men det er ikke alt. Zope er mere en platform, der består af værktøjer (inkluderet web-rammer) skabt under Zope-filosofien og vedligeholdt af Zope Corporation.

Zope har flere interessante komponenter og funktioner, der er egnede til virksomhedsapplikationsudvikling:

  • En komponentregistrerings- og opdagelsesarkitektur til at konfigurere en stor app.
  • ZODB — (den eneste) objektdatabase for Python til at gemme objekter indbygget.
  • Fuldgyldige rammer og standarder for Content Management Systems
  • Et sæt webapplikationsrammer — den kanoniske hedder stadig Zope, selvom flere nye rammer (som Grok) er blevet bygget oven på den.
  • Stærke standarder for softwareudvikling, frigivelse og vedligeholdelse.

Er Zope noget for dig?

Hvis du leder efter et meget struktureret miljø til at bygge virkelig store apps, er Zope godt. Når det er sagt, vil du også støde på din rimelige andel af problemer. Mens Zope fortsætter med at udvikle sig, er fællesskabet virkelig lille, i det omfang, at mange Python-udviklere ikke engang har hørt om det. Det er svært at finde selvstudier og omfattende dokumentation, så vær forberedt på at grave en masse rundt (selvom fællesskabet er virkelig nyttigt!). Også de Python-udviklere, du støder på, vil måske ikke lære Zope og “fortynde” deres færdighedssæt.

TurboGears

TurboGears er en meget fleksibel ramme, der har en ægte komponerbar arkitektur. Det er en ramme, der skaleres efter dine behov, og du kan bruge den til at bygge en enkelt-fil applikation eller en multi-lejemål.

  7 bedste IDE'er til udvikling af mobilapps

TurboGears har nogle elegante funktioner, hvoraf nogle enten ikke er til stede i populære rammer (som Django) eller er svære at bygge:

  • Førsteklasses support til flere databaser
  • Multi-database transaktioner
  • Meget modulopbygget – start med en enkelt fil og skaler ud så meget, som du har brug for
  • En kraftfuld ORM (SQLAlchemy, som er mere moden og dygtig end Djangos ORM)
  • Pluggbar arkitektur baseret på WSGI-specifikationen
  • Indbygget understøttelse af databaseskæring
  • En funktionsdrevet grænseflade i modsætning til dybe, stive objektorienterede hierarkier.

Er TurboGears noget for dig?

Hvis du ønsker at udvikle dig med glæde og ønsker et testet, modent og robust rammeværk væk fra mediestøjen fra “fantastisk, næste generation” og alt det der, er TurboGears en god pasform. Det er højt respekteret i samfundet og har komplet, omfattende dokumentation. Selvfølgelig er TurboGears ikke selvbevidst, hvilket betyder, at indledende opsætnings- og konfigurationstid kan være længere, men det er den ideelle ramme for udvikling af virksomhedsapplikationer.

Web2py

Web2py startede som et hobbyprojekt og blev udgivet i 2007. Dets mål er at gøre webudvikling let og tilgængeligt for alle.

Som et resultat tager Web2py nul-afhængighedstilgangen til det yderste – den har ingen krav, intet at installere, og den inkluderer en fuldt udstyret webbaseret editor til udvikling, databasestyring samt implementering.

Du kan næsten tænke på det som Android Studio, som er mere et komplet miljø end blot et framework. Nogle gode funktioner, som Web2py har, er:

  • Stort set ingen indlæringskurve.
  • Minimal kerne (kun 12 objekter), som endda kan huskes!
  • Pure-Python-skabelon
  • Beskyttelse mod XSS, CSRF og andre angreb
  • En behagelig og konsekvent API

Er Web2py noget for dig?

Web2py er et stabilt og sjovt framework, men det er svært at anbefale det mod andre muligheder som Django, Flask osv. Der er næppe nogen job, og enhedstesthistorien er ikke fantastisk. Når det er sagt, kan du måske nyde kode-API’en og den overordnede oplevelse, som rammeværket tilbyder, især hvis du bygger REST API’er.

CherryPy

CherryPy er et andet mikrorammeværk, der har til formål at give grundlæggende rammefunktionalitet og hurtigt komme af vejen.

Selvom det kan sammenlignes med andre mikrorammeværker som Flask, kan CherryPy prale af en vis udmærkelse:

  • Den indeholder en indbygget multi-threaded server (noget, der forbliver på ønskelisten til Flask)
  • Den (enkelte) webserver kan være vært for flere applikationer!
  • Server din applikation som en WSGI-app (til grænseflade med andre WSGI-apps) eller en almindelig HTTP-server (som yder bedre)
  • Førsteklasses support til profilering og enhedstest
  • Kører på PyPy (for de sande præstationsjunkies), Jython og endda Android

CherryPy gør alt dette, og så det sædvanlige, du ville forvente af en webramme.

Er CherryPy noget for dig?

Hvis du for det meste bygger RESTful-tjenester, er CherryPy en meget mere seriøs udfordrer end Flask. Det er et årti gammelt rammeværk, der er modnet godt og er velegnet til både små og store applikationer.

Sanic

Fremkomsten af ​​Node og dens asynkrone programmeringsmodel efterlod mange samfund, der følte sig bagud, inklusive Pythons. Som svar er en byge af asynkrone web-rammer dukket op på radaren, Sanic at være en af ​​dem.

Sanic er stærkt inspireret af Flask, i det omfang det lånte rutedekoratører, Blueprints og andre fundamentale krogline og synker. Og de skammer sig ikke over at indrømme det. Hvad Sanic bringer til bordet, hvis du er en Flask-fan, er ægte ikke-blokerende I/O for at opfylde ydeevneniveauerne for en Node-applikation. Med andre ord, Sanic er Flask med async/wait support!

  Sådan ændres sproget på Netflix [All Devices]

Sammenlignet med CherryPy har Sanic en utrolig ydeevnefordel (tænk bare på, hvordan det ville klare sig mod Flask!). Tjek følgende resultater testet af DataWeave:

Som du kan se, når samtidige tallene begynder at overstige 50 i sekundet, kvæler CherryPy praktisk talt og giver en høj fejlrate.

Er Sanic noget for dig?

Selvom Sanic’s præstationsegenskaber blæser alt andet ud af vandet, er det måske ikke det bedste valg til dit næste projekt. Hovedårsagen er manglen på asynkrone biblioteker. Størstedelen af ​​eksisterende Python-værktøjer og -biblioteker blev skrevet til den enkelt-trådede CPython-version, uden omtanke for høj samtidighed eller asynkrone operationer. Hvis for eksempel din foretrukne ORM ikke understøtter asynkrone operationer, bliver hele pointen med at bruge Sanic besejret.

På grund af disse modenheds- og tilgængelighedsårsager vil vi ikke undersøge flere asynkrone rammer i Python.

Masonit

Jeg stødte på denne ramme for et stykke tid siden og tænkte, at det var et skridt i den rigtige retning. Siden da er version 2.0 blevet frigivet, og jeg føler, at tiden endelig er kommet til at give Masonit noget kærlighed.

Kort sagt, Masonite er Python-versionen af ​​Laravel (en berømt PHP-ramme, hvis du ikke vidste det). Hvorfor betyder det noget? Det betyder noget, fordi Laravel blev bygget på principperne fra Ruby on Rails, og sammen tillader disse to rammer, at ikke-Ruby-udviklere kan opleve “Rails Way” at gøre tingene på.

Laravel (og til en vis grad Rails) udviklere vil føle sig hjemme og ville være i gang på bogstaveligt talt ingen tid. Da jeg prøvede Masonite (og jeg indsendte et problem eller to, inklusive en fejl!), var jeg i stand til at bygge REST API’er med nøjagtig nultænkning, fordi min Laravel-muskelhukommelse gjorde alt.

Som et batteri-inkluderet rammeværk i fuld stack bringer Masonite flere interessante ting til bordet:

  • Active-record stil ORM
  • Databasemigrationer (som i modsætning til Django skal oprettes af udvikleren)
  • En kraftfuld IoC-beholder til afhængighedsinjektion
  • Egen CLI (kaldet “craft”) til stilladser og løbeopgaver
  • Førsteklasses support til enhedstest

Den største “rival” for Masonite er Django, da fællesskabet gør sit bedste for at markedsføre rammerne som let, dejlig og den næste store ting. Om det vil overgå Django er noget tiden vil vise (hvis du spørger mig, har det et anstændigt skud), men for en diskussion, der sammenligner de to, se her og her.

Er Masonite noget for dig?

Masonite er stadig en baby sammenlignet med Django, så der er ingen måde, det kan anbefales fremfor Django. Når det er sagt, hvis du er til Rails-måden (eller Laravel-måden) at gøre tingene på, ville du sætte pris på, hvad Masonite har at tilbyde. Den er ideel til hurtigt at bygge prototyper, der kræver alt forudkonfigureret og nemt at skifte.

Konklusion

Der er ingen mangel på Python-frameworks derude, store som små. Selvom du kan hente stort set alt til et lille projekt, har en virksomhedsapplikation krav, som ikke mange af disse rammer kan opfylde. Hvis du spørger mig, for virksomhedsudvikling er Django (til en vis grad), Zope og TurboGears, hvad der kommer til at tænke på. Og selv blandt dem er jeg tilbøjelig til TurboGears.

Når det er sagt, kan enhver arkitekt, der er salt værd, hente en mikroramme og rulle deres arkitektur ud. Og det er stort set, hvad der sker i praksis, hvilket forklarer succesen med Flask og lignende ideer.

Hvis du er nybegynder, så dette online kursus ville være nyttigt at lære Python.

Udforsk derefter nogle af de specialiserede Python-rammer til at bygge API’er.