Programiranje

5 velikih in zmogljivih spletnih okvirov Python

Ko ustvarite zadnji del spletnega mesta ali storitve, tudi tistega, ki se na prvi pogled zdi skromen, lahko hitro ugotovite, da gre za vse prej kot za. Tudi "preprosto" spletno mesto se izkaže kot panj zapletenosti. Upravljanje uporabnikov, oblikovanje podatkov, oddaja obrazcev, varnost - ročno izvajanje tega postane dolgočasno.

Za tiste velike spletne projekte, ko veste, da boste potrebovali vse skupaj s pomivalnim koritom, je najbolje, da se obrnete na ogrodje, ki je priloženo baterijam (in polnilnikom). Tu je pet težkih spletnih okvirov za Python, ki vsebujejo vse, kar potrebujete za izdelavo robustnih spletnih aplikacij, in nato nekaj.

CubicWeb

CubicWeb se zaračunava kot "semantični okvir spletnih aplikacij, ki daje prednost ponovni uporabi in objektno usmerjenemu oblikovanju." Gre za zanimiv sistem - kot je ugotovil Rick Grehan, ko ga je pregledal že leta 2011, - ki poudarja uporabo abstrakcij in gradnikov kode za večkratno uporabo, imenovanih "kocke". Pravzaprav je CubicWeb za nekatere razvijalce morda preveč abstrakten ali samosvoj, njegova hitrost in nabor funkcij pa zaostajata za drugimi okviri.

Kocke so programske komponente, ki vsebujejo shemo (podatkovni model), entitete (programska logika) in poglede. Če sestavite več kock, pri čemer vsaka opravlja svojo nalogo, lahko sestavite programske aplikacije tako, da ponovno uporabite svojo kodo in kodo drugih.

V bistvu CubicWeb ponuja osnovni gradbeni oder, ki ga uporablja vsaka spletna aplikacija: "repozitorij" za podatkovne povezave in shranjevanje; "spletni mehanizem" za osnovne HTTP zahteve / odzive in CRUD ukrepe; in shemo za modeliranje podatkov. Vse to je opisano v definicijah razreda Python.

Če želite nastaviti in upravljati primerke CubicWeb, uporabljate orodje ukazne vrstice, podobno tistemu, ki se uporablja za Django. Vgrajeni sistem za predloge vam omogoča programsko generiranje izhoda HTML. Uporabite lahko tudi kocko, ki ponuja orodja za spletne uporabniške vmesnike, na primer tisto za ogrodje Bootstrap HTML.

Čeprav CubicWeb podpira Python 3 (od različice 3.23), se zdi, da ne uporablja izvorne async funkcije Pythona 3. Krožni način za vključitev async bi bil uporaba modula cubicweb.pyramid za uporabo ogrodja Pyramid kot spletnega strežnika in risanje vilic Pyramid, ki uporablja asinhrične konstrukcije. Naloge je mogoče izvajati tudi asinhrono s kocko kocka. Toda vse bolj preprosto je za zdaj nedosegljivo.

Če želite pridobiti ali manipulirati trajne podatke v aplikaciji CubicWeb, uporabite jezik poizvedb relacije (RQL), ki uporablja nejasno sintakso, podobno SQL-u, vendar je oblikovan po vzorcu W3C-jevega SparQL-a. Utemeljitev CubicWeba za to je spet abstrakcija: RQL ponuja močno ločeno pot za medsebojno povezavo različnih virov podatkov.

Ker ima CubicWeb veliko odvisnosti, je najbolje uporabiti pip namestite da jih vse poberem. Morda boste morali opraviti tudi določeno količino ročnega prilagajanja lokalnega okolja. To je v nasprotju z drugimi okviri, kjer se izvaja pip namestite ali spuščanje kode ogrodja v podmapo drugega projekta je vse, kar je potrebno. Lahko pa uporabite vsebnik Docker, da se stvari zaženejo.

CubicWeb svojo dolgotrajno dokumentacijo imenuje "knjiga". Avtorji knjige so si vzeli čas, da razložijo nenavaden pristop CubicWeba, predstavijo, kako zgraditi nekatere osnovne aplikacije, vključijo sklice na API in si na splošno prizadevajo, da bi bili konkretni.

CubicWeb ostaja v aktivnem, čeprav počasnem razvoju. Načrti za CubicWeb 4.0 so bili načrtovani od leta 2012, vendar še ni na voljo nobena časovna premica za njegovo dostavo.

Django

V desetletju in spremembah, odkar se je Django prvič pojavil, je postal eden najbolj razširjenih Pythonovih okvirov za ustvarjanje spletnih aplikacij. Django je opremljen z večino vseh baterij, ki jih morda potrebujete, zato je bolj primeren za gradnjo velikih aplikacij kot majhnih.

Django je dolga leta sedel pri različici 1.x. Ko je Django 2.0 prispel konec leta 2017, je združljivost s Pythonom 2 opustil v korist Pythona 3.4 in novejših. Django 3.0, izdan decembra 2019, zahteva Python 3.6 ali novejšo različico in dodaja podporo za nov asinhroni standard ASGI za spletne aplikacije Python.

Ključni del pritožbe Djanga je hitrost uvajanja. Ker Django vključuje toliko kosov, ki jih potrebujete za razvoj povprečne spletne aplikacije, se lahko hitro premaknete. Vgrajeno je usmerjanje, razčlenjevanje URL-jev, povezljivost baze podatkov, vključno z ORM (objektno-relacijski preslikav), preverjanje obrazca, zaščita pred napadi in predloge.

Našli boste gradnike za najpogostejše scenarije spletnih aplikacij. Upravljanje uporabnikov je na primer na voljo na večini spletnih mest, zato ga Django ponuja kot standardni element. Namesto da bi morali ustvariti lasten sistem za sledenje uporabniškim računom, sejam, geslom, prijavam / odjavam, skrbniškim dovoljenjem itd., Django te funkcije ponuja izvorno. Uporabljajo se lahko takšne, kot so, ali razširjene, da zajemajo nove primere uporabe z minimalnim delom.

Django ima zdrave in varne privzete nastavitve, ki vašo spletno aplikacijo ščitijo pred napadi. Ko spremenljivko postavite v predlogo strani, na primer niz z HTML ali JavaScript, se vsebina ne upodablja dobesedno, razen če primera spremenljivke izrecno določite kot varnega. To samo po sebi odpravlja številne pogoste težave pri skriptiranju med spletnimi mesti. Če želite izvesti preverjanje veljavnosti obrazca, lahko uporabite vse od preproste zaščite CSRF do popolnih mehanizmov za preverjanje polj po polju, ki vrnejo podrobne povratne informacije o napakah.

Tako bogat in širok nabor funkcij, kot je Djangov, ne bi bil preveč dober brez zanesljive dokumentacije. Dokumentacija Django podrobno analizira vsak vidik ogrodja z več zornih kotov. Delo s Pythonom 3 ali drugimi različicami jezika, pravilno izvajanje varnosti, izvajanje skupnih komponent spletne aplikacije (kot so seje ali paginacija), ustvarjanje zemljevidov spletnih mest - vsi so zajeti. Podrobno so opisani tudi API-ji za vsako plast aplikacije - model, pogled in predlogo.

Z veliko močjo pa prihaja do velike zapletenosti. Aplikacije Django slovijo kot izjemno težke, polne številnih gibljivih delov. Tudi preprosta aplikacija Django zahteva precej konfiguracije, da se zažene. Če je vaš cilj narediti le nekaj, kot da nastavite nekaj preprostih končnih točk REST, je Django skoraj zagotovo preveč.

Tudi Django ima svoje muhe. Predloge strani na primer ne morejo uporabljati klicateljev. Primer: Lahko opravite {{uporabniškoime}} kot komponento v predlogi, vendar ne {{user.get_name ()}}. To je eden od načinov, kako Django zagotavlja, da vam predloge nehote ne ustrelijo v nogo, toda te omejitve so lahko moteče, če nanje niste pripravljeni. Čeprav obstajajo rešitve, ponavadi vplivajo na uspešnost.

Od različice 3.0 je Django dodal podporo za asinhrone poglede. Na žalost v drugih delih sklada Django, kot je ORM, še ni podpore za asinhronizacijo. Django pa lahko namestite z uporabo ASGI, da v celoti izkoristite asinhročne poglede.

Web2py

V svetu programiranja Ruby je Ruby on Rails dejanski spletni okvir. Profesorja računalniške znanosti Univerze DePaul Massima Di Pierra je Rails navdihnil, da je v Pythonu ustvaril spletni okvir, ki je bil podobno enostaven za postavitev in uporabo. Rezultat je Web2py.

Največja atrakcija Web2pyja je vgrajeno razvojno okolje. Ko nastavite primerek Web2py, dobite spletni vmesnik, v bistvu spletni urejevalnik aplikacij Python, kjer lahko konfigurirate komponente aplikacije. To običajno pomeni ustvarjanje modelov, pogledov in krmilnikov, ki so opisani prek modulov Python ali predlog HTML. Nekaj ​​primerov aplikacij ponuja Web2py iz škatle. Te lahko razstavite, da vidite, kako delujejo, ali jih izkoristite kot začetne predloge za ustvarjanje lastnih aplikacij.

Razvijalci Web2py običajno uvedejo tako, da prenesejo njegovo izvorno kodo in to nadgradijo. Toda za manj tehnične uporabnike v sistemu Windows ali MacOS ustvarjalci Web2py ponujajo različice, ki so v bistvu samostojni strežniki. Prenesite, razpakirajte in zaženite eno od teh različic in dobili boste lokalni spletni strežnik z vnaprej nastavljeno kopijo Web2py. To je lep način, da začnete z ustvarjanjem aplikacije Web2py, ki jo lahko nato po potrebi namestite drugam.

Spletni vmesnik Web2py je bil zgrajen z Bootstrapom 4, zato je preprost za oči in enostaven za krmarjenje. Urejevalnik v brskalniku ne more nadomestiti polno razvitega IDE-ja, je pa opremljen s koristnimi pripomočki, kot sta oštevilčenje vrstic in poudarjanje sintakse Python (vključno s samodejnim zamikom). Vključen je tudi hitri spletni vmesnik lupine Python, tako da lahko z ukazno vrstico komunicirate z Web2py - kar je lepa koncesija za strokovnjake.

Sistem za odvzem podatkov, uporabljen v Web2py, deluje nekoliko drugače kot Djangov ORM in drugi ORM-ji, ki jih navdihuje (na primer Peewee). Ti sistemi za definiranje modelov uporabljajo razrede Python, medtem ko Web2py uporablja konstruktorske funkcije, kot so define_table primeriti modele. Razlike bodo verjetno moteče le, če ste navajeni drugače; ne bi smeli priganjati novincev. Verjetno ne boste imeli težav s povezovanjem Web2py s ponudnikom podatkov, saj se pogovarja s skoraj vsako obstoječo večjo bazo podatkov.

Resnično uporabna funkcija, povezana z bazo podatkov v Web2py, je zmožnost ustvarjanja diagrama modelov, ki vam omogoča, da si predstavite, kako se vaši modeli med seboj povezujejo. Če želite omogočiti to funkcijo, boste morali namestiti knjižnico PyGraphviz.

Web2py z integrirano podporo za jQuery in AJAX ponuja številne druge profesionalne komponente: funkcije internacionalizacije, več načinov predpomnjenja, nadzor dostopa in avtorizacijo ter celo čelne učinke (na primer izbirnik datumov v obrazcih). Vključeni so tudi kljuke za zunanjo in notranjo vmesno programsko opremo, čeprav vmesne programske opreme ne smete zamenjati za osnovne funkcije Web2py. Vendar pa še vedno ni izrecne uporabe Pythonove async funkcije v Web2py, čeprav obstaja načrtovalnik za obdelavo dolgotrajnih nalog.

Ni čudno, da se dokumentacija Web2py imenuje "knjiga". Najprej zajema neverjetno veliko gradiva v Web2py, Python in okoljih za uvajanje, ki se uporabljajo za oba. Drugič, napisano je v zelo dostopnem, pripovednem slogu. Tretjič, poglobljeno govori o običajnih scenarijih oblikovanja aplikacij. Obstaja na primer celo poglavje o uporabi jQueryja za izdelavo aplikacij AJAX.

Weppy

Weppy se počuti na pol poti med minimalno preprostostjo Flaska in popolnostjo Djanga. Medtem ko ima aplikacija Weppy enostavnost Flash, ima Weppy številne funkcije, ki jih najdemo v Djangu, na primer podatkovne plasti in preverjanje pristnosti. Weppy je tako primeren za aplikacije, ki segajo od zelo preprostih do skromno dovršenih.

Koda Weppy na prvi pogled izgleda zelo podobno kot koda Flask ali Bottle. Za vzpostavitev in delovanje osnovnega spletnega mesta z eno potjo je potrebnih le nekaj navodil. Poti se lahko opišejo prek okrasnih funkcij (na enostaven način) ali programsko, sintaksa za to pa se tesno prilega na bučko / steklenico. Predloge delujejo približno enako, razen manjših sprememb v sintaksi.

Weppy je v nasprotju s temi manjšimi okviri, saj vključuje nekatere funkcije, ki jih vsebujejo samo kot vtičnike ali dodatke. Niti Flask niti Bottle nimata vgrajenega ORM ali sistema za upravljanje podatkov. Weppy vključuje ORM, čeprav tak, ki temelji na projektu pyDAL in ne na bolj priljubljeni SQLAlchemy. Weppy podpira celo selitve shem, ki jih Django podpira kot del ORM-ja (tudi Djangov migracijski sistem je veliko bolj avtomatiziran). Medtem ko ima Weppy razširitveni mehanizem, je seznam uradno odobrenih dodatkov majhen, veliko manjši od kataloga razširitev za Flask.

Lažji ogrodji, kot je Weppy, se pogosto uporabljajo za izdelavo RESTful API-jev, Weppy pa je v ta namen opremljen s priročnimi funkcijami. Daj a @service na poti in podatki, ki jih vrnete, so samodejno formatirani v izbrani obliki JSON ali XML.

Weppy vključuje druge funkcije, ki se zdijo bolj skladne z večjim okvirom, vendar se izvajajo v velikem obsegu. Primeri vključujejo mehanizme za preverjanje veljavnosti podatkov, obdelavo obrazcev, predpomnjenje odzivov in potrditev uporabnika. V vseh teh primerih ima Weppy pristop "ravno dovolj". Ponujene funkcije niso tako popolne, kot jih lahko najdete v Djangu in drugih težkih okoljih, vendar razvijalcu ni treba vložiti veliko dela, da bi postali koristni, in jih je vedno mogoče dejansko razširiti.

Druga težka okvirna funkcija, ki jo najdemo v Weppyju, je internacionalizacija. Strune v predlogah je mogoče prevesti v skladu s krajevnimi datotekami, priloženimi aplikaciji, ki so preprosti slovarji Python. Izbira jezika lahko nastavite tudi z razčlenjevanjem zahteve brskalnika (to je glave HTTP Accept-Language) ali z vezavo prevoda na določeno pot.

Weppyjeva dokumentacija ima enak okus kot sam okvir. Je čist, berljiv in napisan, da ga ljudje zaužijemo. Poleg običajnega primera "hello world" vključuje tudi lepo vadnico, ki vam omogoča, da kot začetni projekt ustvarite sistem mikroblogiranja.

Dolgoročni načrti za Weppy vključujejo podporo async in vtičnic kot prvovrstne entitete na nizki ravni. Razvijalci Weppy nameravajo te funkcije predstaviti v različici 2.0 in nato za vse prihodnje različice Weppyja zahtevati Python 3.7 ali novejšo različico.

Zope

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