Programmēšana

5 lielas un jaudīgas Python tīmekļa sistēmas

Veidojot vietnes vai pakalpojuma aizmuguri, pat tādu, kas no pirmā acu uzmetiena šķiet pieticīga, jūs varat ātri atrast visu, kas nav. Pat “vienkārša” vietne izrādās sarežģīta. Lietotāju pārvaldība, datu noformēšana, veidlapu iesniegšana, drošība - visu to papildināšana ar rokām kļūst garlaicīga.

Tiem lielajiem tīmekļa projektiem, kad jūs zināt, ka jums būs nepieciešams viss, kā arī virtuves izlietne, vislabāk ir vērsties pie ietvara, kas komplektā ir ar baterijām (un lādētājiem). Šeit ir pieci smagie tīmekļa ietvari Python, kas nāk ar visu nepieciešamo, lai izveidotu stabilas tīmekļa lietojumprogrammas, un pēc tam dažas.

CubicWeb

CubicWeb tiek apmaksāts kā “semantiska tīmekļa lietojumprogrammu sistēma, kas atbalsta atkārtotu izmantošanu un objektorientētu dizainu”. Tā ir intriģējoša sistēma - kā to atzīmēja Riks Grehans, pārskatot to vēl 2011. gadā -, kas uzsver abstrakciju un atkārtoti izmantojamu koda bloku, ko sauc par “kubiem”, izmantošanu. Faktiski CubicWeb dažiem izstrādātājiem var būt pārāk abstrakts vai savdabīgs, un tā izstrādes ātrums un funkciju kopa atpaliek no citiem ietvariem.

Kubi ir programmatūras komponenti, kuriem ir shēma (datu modelis), entītijas (programmēšanas loģika) un skati. Apkopojot vairākus klucīšus, katrs veicot savu uzdevumu, varat sastādīt programmatūras lietojumprogrammas, atkārtoti izmantojot savu un citu kodu.

CubicWeb savā būtībā nodrošina pamata sastatnes, kuras izmanto visas tīmekļa lietotnes: datu krātuve datu savienojumiem un glabāšanai; “tīmekļa programma” HTTP pieprasījuma / atbildes un CRUD pamata darbībām; un shēma datu modelēšanai. Tas viss ir aprakstīts Python klases definīcijās.

Lai iestatītu un pārvaldītu CubicWeb gadījumus, jūs strādājat ar komandrindas rīku, kas līdzīgs Django izmantotajam. Iebūvēta veidņu sistēma ļauj programmatiski ģenerēt HTML izvadi. Varat arī izmantot kubu, kas nodrošina rīkus tīmekļa lietotāja saskarnēm, piemēram, Bootstrap HTML ietvaram.

Lai gan CubicWeb atbalsta Python 3 (kopš versijas 3.23), šķiet, ka tajā netiek izmantota Python 3 vietējā asinhronā funkcionalitāte. Apļveida veids, kā iekļaut asinhronu, būtu izmantot moduli cubicweb.pyramid, lai izmantotu Pyramid Framework kā tīmekļa serveri, un izdarīt uz Pyramid dakšas, kurā tiek izmantotas asinhronās konstrukcijas. Uzdevumus ir iespējams veikt arī asinhroni ar kuba tīkla darbinieka kubu. Bet pagaidām viss tiešāks šķiet nepieejams.

Lai ielādētu vai manipulētu ar pastāvīgiem datiem CubicWeb lietotnē, izmantojiet Relation Query Language (RQL), kas neskaidri izmanto SQL līdzīgu sintaksi, bet ir veidota pēc W3C's SparQL. CubicWeb pamatojums tam atkal ir abstrakcija: RQL nodrošina ļoti atsaistītu ceļu dažādu datu avotu savstarpējai sasaistei.

Tā kā CubicWeb ir daudz atkarību, vislabāk to izmantot pip instalēt tos visus atnest. Iespējams, jums būs jāveic arī noteikts manuāls kniebiens vietējā vidē. Tas ir pretstatā citiem ietvariem pip instalēt vai ietvert ietvara kodu cita projekta apakšmapē ir viss, kas nepieciešams. Vai arī jūs varētu izmantot Docker konteineru, lai lietas darbotos.

CubicWeb savu garo dokumentāciju sauc par “grāmatu”. Grāmatas autori ir veltījuši laiku, lai izskaidrotu CubicWeb neparasto pieeju, parādītu, kā izveidot dažas pamata lietojumprogrammas, iekļaujot atsauces uz API, un kopumā viņi dara visu iespējamo, lai būtu specifiski.

CubicWeb joprojām ir aktīvā, ja lēna, attīstībā. CubicWeb 4.0 plāni ir izstrādāti kopš 2012. gada, taču tā piegādei vēl nav piedāvāts laika grafiks.

Django

Dekādē un pārmaiņās kopš Django pirmās parādīšanās tā ir kļuvusi par vienu no Python visplašāk izmantotajiem ietvariem tīmekļa lietojumprogrammu izveidošanai. Django ir aprīkots ar lielāko daļu visu nepieciešamo akumulatoru, padarot to piemērotāku lielu, nevis mazu lietojumprogrammu veidošanai.

Django daudzus gadus pavadīja, sēžot pie versijas 1.x. Kad Django 2.0 ieradās 2017. gada beigās, tā samazināja saderību ar Python 2 par labu Python 3.4 un jaunākām versijām. Django 3.0, kas izlaists 2019. gada decembrī, prasa Python 3.6 vai labāku versiju, kā arī pievieno atbalstu jaunajam asinhronajam ASGI standartam Python tīmekļa lietojumprogrammām.

Galvenā Django apelācijas sastāvdaļa ir izvietošanas ātrums. Tā kā Django ietver tik daudz gabalu, kas nepieciešami, lai izstrādātu vidējo tīmekļa lietojumprogrammu, jūs varat ātri pārvietoties. Maršrutēšana, URL parsēšana, datu bāzes savienojamība, ieskaitot ORM (objektu-relāciju kartētājs), veidlapu pārbaude, uzbrukumu aizsardzība un veidnes ir iebūvētas.

Jūs atradīsit veidus visbiežāk sastopamajiem tīmekļa lietojumprogrammu scenārijiem. Piemēram, lietotāju pārvaldība ir atrodama lielākajā daļā vietņu, tāpēc Django to piedāvā kā standarta elementu. Tā vietā, lai izveidotu savu sistēmu lietotāju kontu, sesiju, paroļu, pieteikšanās / atteikšanās, administratora atļauju un tā tālāk izsekošanai, Django nodrošina šīs funkcijas dabiski. Tos var izmantot tādus, kādi tie ir, vai paplašināt, lai aptvertu jaunus lietošanas gadījumus ar minimālu darbu.

Django ir saprātīgi un droši noklusējumi, kas palīdz aizsargāt jūsu tīmekļa lietojumprogrammu no uzbrukumiem. Ievietojot mainīgo lapas veidnē, piemēram, virkni ar HTML vai JavaScript, saturs netiek renderēts burtiski, ja vien nepārprotami nenorādāt mainīgā gadījumu kā drošu. Tas pats par sevi novērš daudzas izplatītas vietņu skriptu problēmas. Ja vēlaties veikt veidlapu pārbaudi, varat izmantot visu, sākot no vienkāršas CSRF aizsardzības līdz pilnīgai lauka validācijas mehānismam, kas sniedz detalizētu atgriezenisko saiti ar kļūdām.

Funkcija, kas ir tik bagāta un plaša kā Django, nebūtu daudz laba, ja tai nebūtu pievienota stingra dokumentācija. Django dokumentācijā tiek analizēti visi ietvara aspekti no vairākiem leņķiem. Darbs ar Python 3 vai citiem valodas aromātiem, pareiza drošība, kopīgu tīmekļa lietojumprogrammu komponentu ieviešana (piemēram, sesijas vai lapošana), vietņu karšu ģenerēšana - tie visi ir iekļauti. Katra lietojumprogrammas slāņa - modeļa, skata un veidnes - API ir arī detalizēti aprakstīti.

Ar lielu spēku tomēr nāk ļoti sarežģīti. Django lietojumprogrammām ir reputācija, ka tās ir smagnējas un pilnas ar daudzām kustīgām detaļām. Pat vienkāršai Django lietotnei ir nepieciešama diezgan daudz konfigurācijas, lai tā darbotos. Ja jūsu mērķis ir darīt nedaudz vairāk, nekā izveidot pāris vienkāršus REST galapunktus, Django gandrīz noteikti ir pārspīlēts.

Django ir arī savādas dīvainības. Piemēram, lapu veidnēs nevar izmantot izsaucamos. Piemērs: Jūs varat nokārtot {{user.name}} kā komponentu veidnē, bet ne {{user.get_name ()}}. Tas ir viens no veidiem, kā Django nodrošina, ka veidnes netīšām nešauj jums kājā, taču šie ierobežojumi var sagraut, ja neesat tiem gatavs. Lai gan ir risinājumi, viņi parasti maksā par veiktspēju.

Sākot ar 3.0 versiju, Django ir pievienojis atbalstu asinhroniem skatiem. Diemžēl citās Django kaudzes daļās, piemēram, ORM, asinhronizācija vēl netiek atbalstīta. Bet jūs varat izvietot Django, izmantojot ASGI, lai pilnībā izmantotu asinhrono skatu priekšrocības.

Web2py

Rubīna programmēšanas pasaulē Ruby on Rails ir faktiskais tīmekļa ietvars. DePaulas universitātes datorzinātņu profesoru Masimo Di Pjero Rails iedvesmoja, lai Python izveidotu tīmekļa sistēmu, kuru bija tikpat viegli uzstādīt un lietot. Rezultāts ir Web2py.

Web2py lielākā pievilcība ir iebūvētā izstrādes vide. Iestatot Web2py gadījumu, jums tiek nodrošināta tīmekļa saskarne, galvenokārt tiešsaistes Python lietojumprogrammu redaktors, kurā varat konfigurēt lietotnes komponentus. Tas parasti nozīmē modeļu, skatu un kontrolleru izveidi, katrs aprakstīts, izmantojot Python moduļus vai HTML veidnes. Dažos lietotņu piemēros ir Web2py no kastes. Varat tos nošķirt, lai uzzinātu, kā viņi darbojas, vai izmantot tos kā startera veidnes, lai izveidotu savas lietotnes.

Izstrādātāji Web2py parasti izvieto, lejupielādējot tā pirmkodu un balstoties uz to. Bet mazāk tehniskiem lietotājiem Windows vai MacOS Web2py veidotāji piedāvā versijas, kas būtībā ir atsevišķi serveri. Lejupielādējiet, izpakojiet un palaidiet vienu no šīm versijām, un jums būs vietējais tīmekļa serveris ar iebūvēta Web2py iepriekš konfigurētu kopiju. Tas ir jauks veids, kā uzlabot Web2py lietotnes izveidi, kuru pēc vajadzības var izvietot citur.

Web2py tīmekļa saskarne tika veidota, izmantojot Bootstrap 4, tāpēc to ir viegli redzēt un ērti orientēties. Pārlūkprogrammas redaktors neaizstāj pilnvērtīgu IDE, taču tas ir aprīkots ar noderīgiem palīglīdzekļiem, piemēram, līniju numerāciju un Python sintakses izcelšanu (ieskaitot automātisko atkāpi). Iekļauta arī ātra tīmekļa saskarne Python čaulai, lai jūs varētu mijiedarboties ar Web2py no komandrindas - patīkama piekāpšanās ekspertiem.

Web2py izmantotā datu ieguves sistēma darbojas nedaudz savādāk nekā Django ORM un citi no tā iedvesmoti ORM (piemēram, Peewee). Šīs sistēmas modeļu definēšanai izmanto Python klases, savukārt Web2py izmanto tādas konstruktora funkcijas kā definēt_tabulu lai modelētu modeļus. Atšķirības, visticamāk, sagrauzīs tikai tad, ja esat pieradis citādi; viņiem nevajadzētu maldināt jaunpienācējus. Jums, visticamāk, nebūs problēmu ar Web2py piesaisti datu sniedzējam, jo ​​tas runā ar gandrīz visām lielākajām esošajām datu bāzēm.

Patiesi noderīga ar datu bāzi saistīta funkcija Web2py ir iespēja ģenerēt modeļu diagrammu, kas ļauj jums vizualizēt, kā jūsu modeļi ir savstarpēji saistīti. Lai iespējotu šo funkciju, jums būs jāinstalē PyGraphviz bibliotēka.

Web2py piegādā daudzus citus profesionālas kvalitātes komponentus: internacionalizācijas funkcijas, vairākas kešatmiņas metodes, piekļuves kontroli un autorizāciju un pat priekšējās daļas efektus (piemēram, datumu atlasītāju veidlapās), izmantojot integrētu atbalstu jQuery un AJAX. Iekļauti arī ārējās un iekšējās starpprogrammatūras āķi, lai gan Web2py pamatfunkciju nomaiņai nav atļauts izmantot starpprogrammatūru. Tomēr Web2py līdz šim nav skaidri izmantota Python asinhronā funkcionalitāte, lai gan ilgstošu uzdevumu apstrādei ir plānotājs.

Nav brīnums, ka Web2py dokumentācija tiek dēvēta par “grāmatu”. Pirmkārt, tas aptver satriecošu daudzumu materiālu Web2py, Python un abās izmantotajās izvietošanas vidēs. Otrkārt, tas ir uzrakstīts ļoti pieejamā stāstījuma stilā. Treškārt, tā padziļināti runā par kopīgiem lietojumprogrammu veidošanas scenārijiem. Piemēram, ir visa nodaļa par jQuery izmantošanu AJAX lietojumprogrammu veidošanai.

Weppy

Vepijs jūtas kā pusceļš starp minimālo Kolbas vienkāršību un Django pilnīgumu. Kamēr Weppy lietotnei ir Flash vienkāršība, Weppy ir aprīkots ar daudzām Django atrodamām funkcijām, piemēram, datu slāņiem un autentifikāciju. Tādējādi Weppy ir piemērots lietotnēm, kas svārstās no ārkārtīgi vienkāršām līdz nedaudz izsmalcinātām.

No pirmā acu uzmetiena Weppy kods izskatās ļoti daudz, piemēram, kolbas kods vai pudeles kods. Lai izveidotu un darbotos pamata, viena maršruta vietne, ir nepieciešamas dažas instrukcijas. Maršrutus var aprakstīt, izmantojot funkciju dekorētājus (vienkāršākais veids) vai programmatiski, un tā sintakse ir cieši saistīta ar kolbu / pudeli. Veidņu veidošana darbojas aptuveni tāpat, izņemot nelielas sintakses variācijas.

Weppy kontrastē ar šiem mazākajiem ietvariem, iekļaujot dažas funkcijas, kuras tie iekļauj tikai kā spraudņus vai papildinājumus. Piemēram, ne kolbā, ne pudelē nav iebūvētas ORM vai datu pārvaldības sistēmas. Weppy ietver ORM, kaut arī pamatojoties uz pyDAL projektu, nevis daudz populārāko SQLAlchemy. Weppy pat atbalsta shēmas migrāciju, kuru Django atbalsta kā daļu no sava ORM (Django migrācijas sistēma ir arī daudz automatizētāka). Lai gan Weppy ir paplašināšanas mehānisms, oficiāli apstiprināto papildinājumu saraksts ir niecīgs, daudz mazāks nekā Kolbas paplašinājumu katalogs.

Vieglākas konstrukcijas, piemēram, Weppy, bieži izmanto, lai izveidotu RESTful API, un Weppy šim nolūkam ir aprīkotas ar ērtības funkcijām. Ievietojiet a @apkalpošana dekorētājs maršrutā, un jūsu atgrieztie dati tiek automātiski formatēti pēc jūsu izvēles JSON vai XML.

Weppy ietver citas funkcijas, kas, šķiet, vairāk atbilst lielākam ietvaram, bet tiek ieviestas bez lielapjoma. Piemēri ietver datu validācijas mehānismus, veidlapu apstrādi, atbildes kešatmiņu un lietotāju validāciju. Visos šajos gadījumos Vepijs izvēlas pieeju “pietiekami daudz”. Nodrošinātās funkcijas nav tik pilnīgas, kā jūs varētu atrast Django un citās smagās konstrukcijās, taču izstrādātājam nav jāiegulda daudz darba, lai tās būtu noderīgas, un tās vienmēr var pagarināt pēc fakta.

Vēl viena smagā svara ietvara iezīme, kas atrodama Weppy, ir internacionalizācijas atbalsts. Veidnēs esošās virknes var tulkot atbilstoši lietojumprogrammai pievienotajiem lokalizācijas failiem, kas ir vienkāršas Python vārdnīcas. Valodas izvēli var iestatīt arī parsējot pārlūka pieprasījumu (tas ir, HTTP galveni Accept-Language) vai saistot tulkojumu ar noteiktu maršrutu.

Weppy dokumentācijai ir tāds pats aromāts kā pašam ietvaram. Tas ir tīrs, lasāms un rakstīts, lai to lietotu cilvēki. Papildus parastajam “labdien pasaules” piemēram, tajā ir iekļauta jauka apmācība, kas ļauj izveidot mikroblogošanas sistēmu kā startera projektu.

Weppy ilgtermiņa plānos ietilpst asinhronizācijas un ligzdu kā zema līmeņa pirmās klases vienību atbalstīšana. Weppy izstrādātāji plāno ieviest šīs funkcijas versijā 2.0 un pēc tam pieprasīt Python 3.7 vai labāku visām nākamajām Weppy versijām.

Zope

$config[zx-auto] not found$config[zx-overlay] not found