Python is 'n prettige speelding en 'n vreesaanjaende vlamwerker. Dieselfde geld wat u met Python kan doen.
Python is geliefd deur sowel hobbyiste, wetenskaplikes as argitekte.
Dit is maklik om mee te begin, het abstrakte met hoër orde en metaprogrammeringsvermoëns om groot en ingewikkelde stelsels te bou, en het vol vragmotors met biblioteke om bykans alles te doen. Natuurlik, daar is beperkinge in die samehang en sterk tik, maar u kan daar rondom werk.
In hierdie artikel kyk ons ​​na enkele van die beste Python-raamwerke as dit kom by die bou van webtoepassings groot en klein.
Die Django die raamwerk het die toets van die tyd van die internet-raamwerk vir die Python-gemeenskap teëgestaan. As u 'n Python-ontwikkelaar in hul slaap aangerand en hulle gedwing het om 'n webtoepassing op 'n geweerpunt te bou, sal hulle outomaties na Django reik soos 'n Rubyist vir Rails sal bereik.
En daar is 'n goeie rede daarvoor. Django is, soos die titellyn sê, "n webraamwerk vir perfeksioniste met sperdatums.' Dit word 'n 'batterye ingesluit'-raamwerk genoem (soos Python is 'n taalbattery) wat alle algemene funksies buite die kassie bied.
Met hierdie funksies wat ingebak word, besnoei Django die ontwikkelingstyd baie:
'N Handige en aangename ORM, met migrasies wat outomaties binne die raamwerk geskep en toegepas word.
Steierwerk vir outomatiese generasie van adminpaneel gebaseer op u modelle.
Ondersteuning vir koekies, sessies, middelware, sjablone, ens.
Sekuriteitskenmerke soos XSS-voorkoming, CRSF-voorkoming, ens. Word outomaties toegepas.
Werk met feitlik alle databasisse daar buite (dit is maklik om adapters te vind waar amptelike ondersteuning nie bestaan ​​nie)
Eersteklas ondersteuning vir geografiese data en ruimtelike vrae GeoDjango
En baie, baie meer. Dit is genoeg om te sê Django is 'n volwaardige, vriendelike webraamwerk.
Is Django vir jou?
Django maak uitstekende sin vir alle gebruiksgevalle, hetsy vinnig prototipering of 'n ondernemingstoepassing beplan. Die enigste ruwe rand wat u teëkom, is die struktuur van die raamwerk. Aangesien Django agteroor buig om die ontwikkeling vinnig en maklik vir u te maak, lê dit die struktuur ('n konsep genaamd "konvensie oor konfigurasie") op die ontwikkelaar, waarmee u nie saamstem nie. As u byvoorbeeld die Django ORM met iets anders wil vervang (sê: SQL Alchemy), wees voorbereid op verrassings.
Stel u belang om 'n volledige stapelontwikkelaar te word saam met Django en Python? – Kyk hierna fantastiese aanlyn kursus.
Terwyl Django byna al die gedagtes in Python-webontwikkeling gebruik, Fles is 'n sterk aanspraakmaker.
In teenstelling met Django is Flask 'n 'mikro-raamwerk', wat beteken dat dit daarop fokus om 'n paar blote minimum dinge reg te kry en die res aan jou oorlaat. Hierdie "die res is aan u" kan 'n bron van frustrasie of verheug wees, afhangende van wat u doelwitte is. Vir diegene wat weet wat hulle doen en hul webtoepassings liefdevol wil ontwerp deur komponente van hul keuse te kies, is Flask 'n godsdiens.
Flask bied die volgende funksies:
Roetering, templatering, sessiebestuur en ander nuttige funksies.
Volle ondersteuning vir eenheidstoetsing
'N Minimale, koppelbare argitektuur
Ondersteuning vir bloudrukke, die unieke argitektuur van Flask vir klein webtoepassings
Kies u pakkette vir ORM, migrasies, ens.
Buigsame toepassingsstruktuur – plaas u lêers waar dit die beste sin vir u is
Is fles vir jou?
Soos reeds gesê, is Flask 'n minimale webraamwerk, met alles opgedeel in individuele komponente wat u kan uitruil. As u haastig is om 'n prototipe op te stel, spandeer u baie tyd aan die neem van besluite oor die databasis, vouerstruktuur, routing, ens., Wat teenproduktief kan wees. Fles werk die beste as u op pad is na 'n stabiele, ernstige projek van medium tot groot, veral REST API's.
As u gedink het dat Flask se benadering nie minimaal genoeg is nie en dat u nog meer beheer wil hê, sê dan hallo aan bottel.
Bottels strook nog meer uit, tot die punt waar die Python-standaardbiblioteek die enigste afhanklikheid is. Dit beteken dat geen pip dit installeer nie, of dit moet ook nie geïnstalleer word nie, hoewel dit waarskynlik nodig is dat u dit eers moet doen. Dit is die rede waarom bottel vir sommige mense uitstaan:
Ontplooiing van enkellêers. Ja, u volledige toepassing leef in 'n enkele .py-lêer.
Geen eksterne afhanklikhede nie. As u die regte Python-weergawe geïnstalleer het, is u goed om te gaan.
Voorsien die sjabloon enjin wat met Jinja2, Mako of Cheetah uitgeruil kan word.
Ondersteuning vir vorms, opskrifte, koekies en oplaai van lêers.
Ingeboude webbediener wat maklik vervang kan word.
Is 'n bottel vir jou?
As u 'n baie klein app maak (sê minder as 500 reëls kode) sonder spesiale vereistes, kan dit vir u baie sin maak. Dit is 'n volledige no-nonsense benadering tot die skep van webapps, maar in die praktyk vind u dat u meer belemmer word as wat Bottle help. Die rede is dat die regte wêreld altyd verander en voordat jy dit weet. Nuwe vereistes word op u kop laat val. Op daardie stadium sou dit alles in 'n enkele lêer geplaas word.
As u dink dat bottel en fles amper eenders is, is u reg. Voorstelle van samesmelting die twee dateer uit 2012, en selfs Armin, die skepper van Flask, stem daarmee saam. Marcel, die skepper van Bottle, handhaaf egter 'n streng ideologiese onderskeid vanweë die enkele lêer-benadering en dring daarop aan dat die twee afsonderlik bly.
Zope is ingewikkeld om te verduidelik, maar ek sal probeer. Ja, dit is 'n webraamwerk wat gebruik kan word om toepassings groot of klein te bou, maar dit is nie alles nie. Zope is meer 'n platform wat bestaan ​​uit gereedskap (webraamwerke ingesluit) wat onder die Zope-filosofie geskep is en deur die Zope Corporation onderhou word.
Zope het verskeie interessante komponente en funksies wat geskik is vir die ontwikkeling van ondernemings-toepassings:
'N Komponent wat argitektuur registreer en ontdek om 'n groot app op te stel.
ZODB – (die enigste) objekdatabasis vir Python vir die stoor van voorwerpe.
Volledige raamwerk en standaarde vir inhoudbestuurstelsels
'N Stel raamwerke vir webtoepassings – die kanonieke een word steeds Zope genoem, hoewel verskeie nuwe raamwerke (soos Grok) daarop gebou is.
Sterk standaarde vir die ontwikkeling, vrystelling en onderhoud van sagteware.
Is Zope vir jou?
As jy 'n baie gestruktureerde omgewing het om regtig groot programme te bou, is Zope goed. Dit gesê, jy sal ook met 'n billike deel van die kwessies deelneem. Terwyl Zope aanhou ontwikkel, is die gemeenskap baie klein, tot so 'n mate dat baie Python-ontwikkelaars dit nie eens gehoor het nie. Dit is moeilik om tutoriale en uitgebreide dokumentasie te vind, dus wees bereid om baie te grawe (hoewel die gemeenskap regtig behulpsaam is!). Die Python-ontwikkelaars wat u teëkom, wil dalk nie Zope leer nie en hul vaardighede nie "verdun" nie.
TurboGears is 'n uiters buigsame raamwerk wat 'n werklike komposisie-argitektuur het. Dit is 'n raamwerk wat volgens u behoeftes skaal, en u kan dit gebruik om 'n enkele lêer-toepassing of 'n meerdere huur-opeenhoping te bou.
TurboGears het 'n paar elegante funksies, waarvan sommige nie in gewilde raamwerke (soos Django) teenwoordig is nie, of dat dit moeilik is om te bou:
Eersteklas ondersteuning vir verskeie databasisse
Hoogs modulêr – begin met 'n enkele lêer en skaal soveel uit as wat u nodig het
'N Kragtige ORM (SQLAlchemy, wat meer volwasse en bekwaam is as Django se ORM)
Aansluitbare argitektuur gebaseer op die WSGI-spesifikasie
Ingeboude ondersteuning vir databasisafskerming
'N Funksiegedrewe koppelvlak in teenstelling met diep, rigiede objekgeoriënteerde hiërargieë.
Is TurboGears vir jou?
As u gelukkig wil ontwikkel en 'n beproefde, volwasse en robuuste raamwerk wil hê, weg van die mediageluid van 'awesome, next-gen' en al, is TurboGears 'n goeie pasmaat. Dit word in die gemeenskap gerespekteer en het volledige, uitgebreide dokumentasie. Natuurlik is TurboGears nie opinies nie, wat beteken dat die aanvanklike opstelling en konfigurasietyd meer kan wees, maar dit is die ideale raamwerk vir die ontwikkeling van ondernemings-toepassings.
Web2py begin as 'n stokperdjieprojek en is in 2007 vrygestel. Die doelwitte daarvan is om webontwikkeling maklik en toeganklik vir almal te maak.
Gevolglik gebruik Web2py die nul-afhanklikheidsbenadering tot die uiterste: dit het geen vereistes, niks om te installeer nie, en bevat 'n volledige web-gebaseerde redakteur vir ontwikkeling, databasisbestuur en ontplooiing..
U kan dit amper as Android Studio dink, wat meer van 'n volledige omgewing is as net 'n raamwerk. 'N Paar mooi funksies wat Web2py het, is:
Feitlik geen leerkurwe nie.
Minimale kern (slegs 12 voorwerpe), wat selfs gememoriseer kan word!
Beskerming teen XSS, CSRF en ander aanvalle
'N Aangename en konsekwente API
Is Web2py vir jou?
Web2py is 'n stabiele en prettige raamwerk, maar dit is moeilik om dit aan te beveel teen ander opsies soos Django, Flask, ens. Daar is amper geen werk nie, en die verhaal van die eenheidstoetsing is nie goed nie. Dit gesê, u kan die API-kode geniet en die algehele ervaring wat die raamwerk bied, veral as u REST-API's bou.
CherryPy is 'n ander mikro-raamwerk wat daarop gemik is om basiese raamwerkfunksionaliteit te bied en vinnig uit die pad te kom.
Alhoewel dit vergelykbaar is met ander mikroraamwerke soos Flask, spog CherryPy met 'n mate van onderskeiding:
Dit bevat 'n ingeboude multidraadbediener (iets wat op die wenslys van Flask bly)
Die (enkele) webbediener kan verskeie toepassings huisves!
Bedien u aansoek as 'n WSGI-app (om met ander WSGI-programme te koppel) of as 'n gewone HTTP-bediener (wat beter presteer)
Eersteklas ondersteuning vir profilering en eenheidstoetsing
Hardloop op PyPy (vir die regte prestasie-junkies), Jython en selfs Android
CherryPy doen dit alles, en dan die gewone wat u van 'n webraamwerk sou verwag.
Is CherryPy vir jou?
As u meestal RESTful-dienste bou, is CherryPy 'n baie ernstiger aanspraakmaker as Flask. Dit is 'n dekade-oue raamwerk wat mooi verouder is en geskik is vir klein en groot toepassings.
Die opkoms van Node en sy asynchrone programmeringsmodel het baie gemeenskappe laat agterbly, insluitend Python. In reaksie hierop het 'n vlaag van asinkagtige webraamwerke op die radar verskyn, Sanic een van hulle wees.
Sanic is sterk geïnspireer deur Flask, in die mate dat dit die roete-versierders, bloudrukke en ander basiese haaklyne en wasbak geleen het. En hulle is nie skaam om dit te erken nie. Wat Sanic na die tafel bring, as jy 'n fles-aanhanger is, is waarlik nie-blokkerende I / O om aan die prestasievlakke van 'n Node-toepassing te voldoen. Met ander woorde, Sanic is 'n fles met 'n asynchronisasie / wag op ondersteuning!
In vergelyking met CherryPy, het Sanic 'n ongelooflike prestasievoordeel (dink net aan hoe dit teen Flask sal vaar!). Kyk na die volgende resultate wat getoets is deur DataWeave:
Soos u kan sien, sodra die gelyktydige getalle meer as 50 per sekonde begin, verstik CherryPy prakties en gooi dit 'n hoë mislukkingskoers op.
Is Sanic vir jou?
Alhoewel die prestasie-eienskappe van Sanic alles anders uit die water blaas, is dit miskien nie die beste keuse vir u volgende projek nie. Die belangrikste rede is die gebrek aan asynchrone biblioteke. Die grootste deel van die bestaande Python-instrumente en -biblioteke is vir die enkel-draad-CPython-weergawe geskryf, met geen nadenke vir hoë gelyktydige of asynchrone operasies nie. As u gunsteling ORM byvoorbeeld nie asinchroniese bewerkings ondersteun nie, word die hele punt om Sanic te gebruik verslaan.
Weens hierdie redes vir volwassenheid en beskikbaarheid, sal ons nie meer asinkroniese raamwerke in Python ondersoek nie.
Ek het hierdie raamwerk 'n rukkie gelede teëgekom en gedink dit is 'n stap in die regte rigting. Sedertdien is weergawe 2.0 vrygestel, en ek voel asof die tyd uiteindelik aangebreek het Masonite bietjie Liefde.
Eenvoudig gestel, Masonite is die Python-weergawe van Laravel ('n beroemde PHP-raamwerk vir ingeval u dit nie weet nie). Waarom maak dit saak? Dit maak saak omdat Laravel op die beginsels van Ruby on Rails gebou is, en saam hierdie twee raamwerke laat nie-Ruby-devs die 'Rails Way' van dinge doen..
Laravel (en tot 'n mate Rails) -ontwikkelaars sal tuis voel en sal binne 'n kort tydjie aan die gang wees. Toe ek Masonite probeer het (en ek het 'n probleem of twee ingedien, insluitend 'n fout!), Kon ek REST API's met presies nul-denke bou, want my Laravel-spiergeheue het alles gedoen.
As 'n vol-stapelraamwerk met batterye, bring Masonite verskeie interessante dinge na die tafel:
ORM vir aktiewe rekordstyl
Databasismigrasies (wat, anders as Django, deur die ontwikkelaar geskep moet word)
'N Kragtige IoC-houer vir inspuiting van afhanklikheid
Eie CLI (genaamd "vaartuig") vir steierwerk en take
Eerste klas ondersteuning vir eenheidstoetsing
Die grootste "mededinger" vir Masonite is Django, omdat die gemeenskap sy bes doen om die raamwerk so maklik, aangenaam en die volgende groot ding te bemark. Of dit Django sal oortref, is iets wat die tyd sal leer (as u my vra, het dit 'n ordentlike skoot), maar kyk na 'n bespreking van die twee hier en hier.
Is Masonite vir jou?
Masonite is nog steeds 'n baba in vergelyking met Django, so dit is geen manier om dit bo Django aan te beveel nie. Dit gesê, as jy 'n manier het om dinge te doen (of die Laravel-manier) om dinge te doen, sal jy dit waardeer wat Masonite te bied het. Dit is ideaal om vinnig prototipes te bou wat alles vooraf opgestel en maklik omgeskakel moet word.
Daar is geen tekort aan Python-webraamwerke daar buite, groot en klein nie. Alhoewel u bykans enigiets vir 'n klein projek kan afhaal, stel 'n ondernemingstoepassing eise wat nie baie van hierdie kaders kan vervul nie. As u my vra vir die ontwikkeling van ondernemings, is dit Django (tot 'n mate), Zope en TurboGears. En selfs onder hulle is ek geneig tot TurboGears.
Dit gesê, enige argitek wat sy sout werd is, kan 'n mikroraamwerk optel en hul argitektuur uitrol. En dit is amper wat in die praktyk gebeur, wat die sukses van Flask en soortgelyke idees verklaar.