Programavimas

5 didelės ir galingos „Python“ žiniatinklio sistemos

Kurdami interneto svetainės ar paslaugos, net ir iš pirmo žvilgsnio kuklaus, galą galite greitai rasti tai, kas ne. Net „paprasta“ svetainė pasirodo esanti sudėtingumo avilys. Vartotojo valdymas, duomenų dizainas, formų pateikimas, saugumas - visa tai įgyvendinti rankomis tampa nuobodu.

Tiems dideliems interneto projektams, kai žinote, kad jums reikės visko ir virtuvės kriauklės, geriausia kreiptis į karkasą, kuris pateikiamas kartu su baterijomis (ir įkrovikliais). Čia pateikiamos penkios „Python“ sunkiasvorės žiniatinklio sistemos, kurios yra viskas, ko jums reikia norint sukurti patikimas žiniatinklio programas, o vėliau ir kai kurias.

„CubicWeb“

„CubicWeb“ yra atsiskaitoma kaip „semantinio žiniatinklio programų sistema, palanki pakartotiniam naudojimui ir objektiniam dizainui“. Tai intriguojanti sistema - kaip pažymėjo Rickas Grehanas, kai dar 2011 m. Ją apžvelgė - pabrėžianti abstrakcijų ir daugkartinio naudojimo kodo, vadinamo „kubeliais“, naudojimą. Tiesą sakant, „CubicWeb“ kai kuriems kūrėjams gali būti per daug abstraktus ar savitas, o jo kūrimo greitis ir funkcijų rinkinys atsilieka nuo kitų sistemų.

Kubai yra programinės įrangos komponentai, turintys schemą (duomenų modelis), objektus (programavimo logika) ir rodinius. Surinkdami kelis kubus, kiekvienas atlikdamas savo užduotį, galite kurti programinės įrangos programas pakartotinai naudodami savo ir kitų kodus.

Savo esme „CubicWeb“ pateikia pagrindinius pastolius, naudojamus kiekvienoje žiniatinklio programoje: duomenų saugyklų ir saugyklos „saugyklą“; „žiniatinklio variklis“ pagrindiniams HTTP užklausų / atsakymų ir CRUD veiksmams atlikti; ir duomenų modeliavimo schema. Visa tai aprašyta „Python“ klasės apibrėžimuose.

Norėdami nustatyti ir valdyti „CubicWeb“ egzempliorius, dirbate naudodami komandinės eilutės įrankį, panašų į tą, kuris naudojamas „Django“. Įtaisyta šablonų sistema leidžia programiškai generuoti HTML išvestį. Taip pat galite naudoti kubą, kuriame pateikiami įrankiai žiniatinklio vartotojo sąsajoms, pvz., „Bootstrap HTML“ sistemai.

Nors „CubicWeb“ palaiko „Python 3“ (nuo 3.23 versijos), neatrodo, kad būtų naudojama „Python 3“ gimtoji asinchroninė funkcija. Žiedinė sankryža, kaip įtraukti async, būtų naudoti modulį cubicweb.pyramid, kad „Pyramid“ sistema būtų naudojama kaip žiniatinklio serveris, ir piešti ant „Pyramid“ šakės, naudojančios asinchronines konstrukcijas. Taip pat galima nesinchroniškai atlikti užduotis su „cubicweb-worker“ kubu. Bet kol kas viskas tiesmukiškiau atrodo nepasiekiama.

Norėdami gauti ar tvarkyti nuolatinius duomenis „CubicWeb“ programoje, naudojate „Relation Query Language“ (RQL), kurioje naudojama miglotai panaši į SQL sintaksė, tačiau ji sukurta pagal W3C „SparQL“. „CubicWeb“ pagrindimas tai vėlgi yra abstrakcija: RQL suteikia labai atsietą kelią, kad būtų galima susieti įvairius duomenų šaltinius.

Kadangi „CubicWeb“ turi daug priklausomybių, geriausia naudoti pip įdiegti parsivežti juos visus. Jums taip pat gali tekti atlikti tam tikrą rankinį patikslinimą vietinėje aplinkoje. Tai yra priešingai nei kitose sistemose, kuriose veikia pip įdiegti arba metant sistemos struktūrą į kito projekto aplanką yra viskas, ko reikia. Arba galite naudoti „Docker“ konteinerį, kad viskas būtų paleista.

„CubicWeb“ savo ilgus dokumentus nurodo kaip „knygą“. Knygos autoriai skyrė laiko paaiškinti neįprastą „CubicWeb“ požiūrį, pademonstruoti, kaip sukurti kai kurias pagrindines programas, įtraukti API nuorodas ir apskritai padaryti viską, kad būtų konkretūs.

„CubicWeb“ išlieka aktyvi, jei lėta, plėtra. „CubicWeb 4.0“ planai buvo tobulinami nuo 2012 m., Tačiau kol kas nebuvo pasiūlyta jo pristatymo laiko juosta.

Django

Dešimtmetyje ir pokyčiuose nuo tada, kai „Django“ pasirodė pirmą kartą, jis tapo vienu iš plačiausiai naudojamų „Python“ tinklalapių kūrimo pagrindų. „Django“ yra su kiekviena baterija, kurios jums gali prireikti, todėl ji labiau tinka kurti dideles programas nei mažas.

Django daugelį metų praleido sėdėdamas prie versijos 1.x. Kai „Django 2.0“ atėjo 2017 m. Pabaigoje, jis sumažino suderinamumą su „Python 2“, naudodamas „Python 3.4“ ir naujesnes versijas. „Django 3.0“, išleistai 2019 m. Gruodžio mėn., Reikia „Python 3.6“ arba naujesnės versijos, taip pat pridedamas naujo asinchroninio „ASGI“ standarto, skirto „Python“ žiniatinklio programoms, palaikymas.

Pagrindinė Django patrauklumo dalis yra dislokavimo greitis. Kadangi „Django“ yra tiek daug kūrinių, kurių reikia vidutinei žiniatinklio programai kurti, galite greitai judėti. Maršrutai, URL analizavimas, duomenų bazių sujungimas, įskaitant ORM (objektų-reliacijų žemėlapį), formos patvirtinimas, apsaugos nuo atakos ir šablonai.

Rasite dažniausiai naudojamų žiniatinklio programų scenarijų sudėtines dalis. Pavyzdžiui, vartotojų valdymas yra daugelyje svetainių, todėl „Django“ siūlo jį kaip standartinį elementą. Užuot turėjęs sukurti savo sistemą, skirtą stebėti vartotojų abonementus, seansus, slaptažodžius, prisijungimus / atsijungimus, administratoriaus teises ir pan., „Django“ teikia tas funkcijas savaime. Jie gali būti naudojami tokie, kokie yra, arba išplėsti, kad apimtų naujus naudojimo atvejus su minimaliu darbu.

„Django“ turi protingus ir saugius numatytuosius nustatymus, kurie padeda apsaugoti jūsų žiniatinklio programą nuo atakos. Kai įdėsite kintamąjį į puslapio šabloną, pvz., Eilutę su HTML ar „JavaScript“, turinys nebus pateiktas pažodžiui, nebent jūs aiškiai nurodysite kintamojo egzempliorių kaip saugų. Tai savaime pašalina daugelį įprastų skirtingų svetainių scenarijų problemų. Jei norite atlikti formos patvirtinimą, galite naudoti viską, pradedant paprasta CSRF apsauga ir baigiant visapusišku tikrinimu kiekviename lauke, kurie pateikia išsamų klaidų atsiliepimą.

Tokia turtinga ir plati savybė, kokia yra Django, nebūtų daug naudinga, jei prie jos nepateikiama patikima dokumentacija. „Django“ dokumentuose įvairiais kampais nagrinėjami visi sistemos aspektai. Darbas su „Python 3“ ar kitais kalbos skoniais, teisingas saugumas, bendrų žiniatinklio programų komponentų diegimas (pvz., Sesijos ar puslapių sudarymas), svetainių schemų generavimas - jie visi yra aprėpti. Taip pat išsamiai aprašytos kiekvieno programos sluoksnio - modelio, rodinio ir šablono - API.

Tačiau turint didelę galią atsiranda labai sudėtinga. „Django“ programos turi didelę reputaciją, nes yra itin sunkios, joje gausu judančių dalių. Net norint atlikti paprastą „Django“ programą reikia nemažai konfigūracijos. Jei jūsų tikslas yra padaryti šiek tiek daugiau, nei nustatyti keletą paprastų REST galinių taškų, Django beveik neabejotinai pralenkia.

Django taip pat turi savo keistenybių. Pavyzdžiui, puslapių šablonuose negalima naudoti skambinamųjų. Pavyzdys: galite perduoti {{Vartotojo vardas}} kaip šablono komponentą, bet ne {{user.get_name ()}}. Tai yra vienas iš būdų, kuriais Django užtikrina, kad šablonai netyčia nešaudys jums į koją, tačiau šie apribojimai gali pakenkti, jei nesate jiems pasiruošę. Nors yra problemų sprendimo būdų, jie linkę mokėti našumą.

Nuo 3.0 versijos „Django“ papildė asinchroninių rodinių palaikymą. Deja, kitose „Django“ kamino vietose, pvz., ORM, async palaikymas dar nepalaikomas. Bet jūs galite įdiegti „Django“ naudodami ASGI, kad galėtumėte visiškai išnaudoti asinchroninius rodinius.

„Web2py“

„Ruby“ programavimo pasaulyje „Ruby on Rails“ yra de facto žiniatinklio sistema. DePaulo universiteto informatikos profesorių Massimo Di Pierro įkvėpė „Rails“ sukurti „Python“ žiniatinklio sistemą, kurią būtų taip pat lengva nustatyti ir naudoti. Rezultatas yra „Web2py“.

Didžiausia „Web2py“ atrakcija yra įmontuota kūrimo aplinka. Kai nustatote „Web2py“ egzempliorių, jums suteikiama žiniatinklio sąsaja, iš esmės internetinis „Python“ programų redaktorius, kuriame galite konfigūruoti programos komponentus. Paprastai tai reiškia modelių, rodinių ir valdiklių kūrimą, kurie visi aprašomi naudojant „Python“ modulius ar HTML šablonus. Keletas programų pavyzdžių yra iš „Web2py“. Galite išskirti tuos, norėdami pamatyti, kaip jie veikia, arba panaudoti juos kaip pradinius šablonus, kad sukurtumėte savo programas.

Kūrėjai paprastai įdiegia „Web2py“ atsisiųsdami šaltinio kodą ir tuo remdamiesi. Tačiau mažiau techniniams vartotojams, naudojantiems „Windows“ ar „MacOS“, „Web2py“ kūrėjai siūlo versijas, kurios iš esmės yra atskiri serveriai. Atsisiųskite, išpakuokite ir paleiskite vieną iš šių versijų ir turėsite vietinį žiniatinklio serverį su iš anksto sukonfigūruota integruoto „Web2py“ kopija. Tai puikus būdas padėti sukurti „Web2py“ programą, kurią prireikus galima pritaikyti kitur.

„Web2py“ žiniatinklio sąsaja buvo sukurta naudojant „Bootstrap 4“, todėl ją lengva stebėti ir lengvai naršyti. Naršyklės redaktorius nepakeičia pilnaverčio IDE, tačiau jis aprūpintas naudingomis pagalbinėmis priemonėmis, tokiomis kaip eilučių numeravimas ir „Python“ sintaksės paryškinimas (įskaitant automatinę įtrauką). Taip pat yra greita „Python“ apvalkalo žiniatinklio sąsaja, todėl galite bendrauti su „Web2py“ iš komandinės eilutės - tai gera nuolaida ekspertams.

„Web2py“ naudojama duomenų abstrakcijos sistema veikia šiek tiek kitaip nei Django ORM ir kiti jo įkvėpti ORM (pvz., „Peewee“). Šios sistemos naudoja „Python“ klases modeliams apibrėžti, o „Web2py“ naudoja tokias konstruktoriaus funkcijas kaip define_table kad išaiškintų modelius. Tikėtina, kad skirtumai bus nemalonūs tik tuo atveju, jei esate įpratęs kitu keliu; jie neturėtų apgadinti naujokų. Tikėtina, kad neturėsite jokių problemų prijungdami „Web2py“ prie duomenų teikėjo, nes ji aptarnauja beveik visas pagrindines egzistuojančias duomenų bazes.

Tikrai naudinga „Web2py“ su duomenų baze susijusi funkcija yra galimybė sugeneruoti modelių diagramą, leidžiančią jums įsivaizduoti, kaip jūsų modeliai yra susiję vienas su kitu. Kad galėtumėte įgalinti šią funkciją, turėsite įdiegti „PyGraphviz“ biblioteką.

„Web2py“ tiekia daugybę kitų profesionalaus lygio komponentų: internacionalizavimo funkcijas, kelis talpyklos metodus, prieigos kontrolę ir autorizavimą ir netgi „front-end“ efektus (pavyzdžiui, formų datos parinkiklį) per integruotą „jQuery“ ir AJAX palaikymą. Taip pat pridedami išorinės ir vidinės tarpinės programinės įrangos kabliai, nors jums neleidžiama naudoti tarpinės programinės įrangos norint pakeisti pagrindines „Web2py“ funkcijas. Tačiau „Web2py“ dar nėra aiškiai naudojamas „Python“ asinchronizavimo funkcionalumas, nors yra planavimo priemonė, leidžianti tvarkyti ilgai vykdomas užduotis.

Nenuostabu, kad „Web2py“ dokumentai vadinami „knyga“. Pirma, jis apima stulbinantį kiekį „Web2py“, „Python“ ir abiem naudojamoms diegimo aplinkoms. Antra, jis parašytas labai prieinamu, pasakojimo stiliumi. Trečia, jame išsamiai kalbama apie įprastus programų kūrimo scenarijus. Pavyzdžiui, yra visas skyrius apie „jQuery“ naudojimą AJAX programų kūrimui.

Weppy

Weppy jaučiasi tarsi pusiaukelėje tarp minimalaus kolbos paprastumo ir Django išbaigtumo. Kuriant „Weppy“ programą yra „Flash“ paprastumas, „Weppy“ turi daugybę „Django“ randamų funkcijų, tokių kaip duomenų sluoksniai ir autentifikavimas. Taigi „Weppy“ tinka programoms, kurios svyruoja nuo itin paprastų iki kukliai įmantrių.

Iš pirmo žvilgsnio Weppy kodas atrodo labai daug, pavyzdžiui, kolbos kodas ar butelio kodas. Norint sukurti ir paleisti pagrindinę, vieno maršruto svetainę, reikia keleto nurodymų. Maršrutus galima apibūdinti per funkcijų dekoratorius (paprastą būdą) arba programiškai, o sintaksė tai padaryti yra labai artima kolbai / buteliui. Šablonai veikia maždaug tuo pačiu, išskyrus nežymius sintaksės variantus.

„Weppy“ skiriasi nuo tų mažesnių rėmelių, įtraukdamas kai kurias funkcijas, kurias jie įtraukia tik kaip papildinius ar priedus. Pavyzdžiui, nei kolboje, nei butelyje nėra įmontuoto ORM ar duomenų valdymo sistemos. „Weppy“ apima ORM, nors ir pagrįstą „pyDAL“ projektu, o ne kur kas populiaresnę „SQLAlchemy“. Weppy netgi palaiko schemų migracijas, kurias Django palaiko kaip savo ORM dalį (Django migracijos sistema taip pat yra daug labiau automatizuota). Nors „Weppy“ turi išplėtimo mechanizmą, oficialiai patvirtintų priedų sąrašas yra nedidelis, daug mažesnis nei „Flask“ plėtinių katalogas.

Tokios lengvesnės sistemos kaip „Weppy“ dažnai naudojamos kuriant „RESTful“ API, o „Weppy“ tuo tikslu aprūpinamos patogumo funkcijomis. Įdėkite a @paslaugos dekoratorius maršrute, o jūsų grąžinti duomenys bus automatiškai suformatuoti pasirinkus JSON arba XML.

„Weppy“ apima ir kitas funkcijas, kurios, atrodo, labiau atitinka didesnę sistemą, tačiau yra įgyvendinamos be masės. Pavyzdžiai apima duomenų tikrinimo mechanizmus, formos tvarkymą, atsakymo talpyklą ir vartotojo patvirtinimą. Visais šiais atvejais Weppy laikosi požiūrio „tik pakankamai“. Pateiktos funkcijos nėra tokios išsamios, kaip galite rasti „Django“ ir kitose sunkiasvorėse sistemose, tačiau kūrėjui nereikia įdėti daug darbo, kad jos būtų naudingos, ir jas visada galima pratęsti.

Kitas sunkiasvoris „Weppy“ pagrindo bruožas yra parama internacionalizacijai. Šablonų eilutės gali būti išverstos pagal lokalės failus, pateiktus su programa, kurie yra paprasti „Python“ žodynai. Kalbos pasirinkimą taip pat galima nustatyti analizuojant naršyklės užklausą (tai yra „Accept-Language HTTP“ antraštę) arba susiejant vertimą su konkrečiu maršrutu.

Weppy dokumentai turi tą patį skonį kaip ir pati sistema. Tai švaru, skaitoma ir parašyta vartoti žmonėms. Be įprasto „labo pasaulio“ pavyzdžio, jame yra puiki instrukcija, leidžianti sukurti mikroblogų sistemą kaip pradinį projektą.

Ilgalaikiai „Weppy“ planai apima asinchronizavimą ir lizdus kaip žemo lygio, pirmos klasės subjektus. „Weppy“ kūrėjai planuoja šias funkcijas pristatyti 2.0 versijoje, o tada reikalauti „Python 3.7“ ar naujesnės versijos visoms būsimoms „Weppy“ versijoms.

Zope