Pastato vaizdai Kolboje

Pagal siūlomą vystymosi modelį ar paradigmą KolbaVienas iš svarbiausių dalykų yra peržiūrų valdymas, nes tai leidžia mums apibrėžti, kaip vartotojas sąveikaus su mūsų puslapiu ar programa.

Paprasčiausias būdas dirbti su vaizdu yra apibrėžti operaciją tiesiogiai jos kelio apibrėžime, tačiau tai ne visada naudinga ar tinkama, ypač jei mes kuriame dideles programas.

ReikalavimaiMums reikia funkcinio įrenginio Kolba ir dėl suderinamumo priežasčių mums reikia aukštesnės versijos 0.7 kadangi vienas iš komponentų, su kuriais dirbsime, nebuvo įtrauktas į sistemą tik po minėtos versijos. Taip pat turime paleisti programą arba turėti tam tikrą programą Kolba kad pavyzdžius galėtume įtraukti į rodinių skiltį ir galėtume juos vykdyti naudodami naršyklę.

Vaidmenimis pagrįstos nuomonės


Tai yra vienas iš paprasčiausių būdų, kaip užmegzti sąveiką su vartotoju, mes turime tik parašyti funkciją ir papuošti ją maršrutu. Kolba gavęs užklausą, jis patikrina, ar yra funkcija, laukianti minėto maršruto, ir tada, jei gauna, vykdo.

Paprastai tokio tipo požiūriams reikalingas bent jau metodas GET apie HTTPTačiau, kaip gera praktika ir saugumo sumetimais, norėdami pridėti vertę prie savo duomenų patvarumo struktūros, taip pat galime naudoti šį metodą POST.

Rodinio kūrimas naudojant GET


Naudodami metodą sukursime vaizdą GETNorėdami tai padaryti, tiesiog turite apibrėžti jos pavadinimą funkcijoje ir priskirti jai maršrutą, tada funkcijos viduje įdėsime savo turinį, pažiūrėkime šį kodą, kad iliustruotume save.
 @ app.route ('/ view-get') def view (): value = request.args.get ('content', 'sample') return 'Tai rodinys naudojant GET ir gaunama reikšmė:% s'% vertės
Tada kode matome, kaip naudojame dekoratorius Norėdami nurodyti, kurio maršruto laukiame, mes apibrėžiame atitinkamą funkciją ir per ją skambiname prašymas į gautus argumentus GET, šiuo atveju ieškome argumento, vadinamo turiniu, ir priskiriame jį kintamajam, vadinamam reikšme, jei šio argumento nėra, „pavyzdys“ bus pateiktas kaip numatytoji vertė, ir galiausiai grąžinsime tekstą ir perduosime vertės turinį .

Jei vykdysime savo pavyzdį naršyklėje, gausime šiuos dalykus:

Rodinio kūrimas naudojant POST


Kas atsitiks, jei norime gauti neskelbtinų duomenų ir nenorime jų perduoti per URL parametrus, nes tokiais atvejais turime naudoti POST metodą, nes jis siunčia duomenis, paslėptus nuo naudotojo, žinoma yra kitos saugumo priemonės, kurias turėtume naudoti, tačiau šiuo metu mums jų nereikia.

Norėdami sukurti rodinį, kuris gauna duomenis POST, turite tik nurodyti laukiamą metodą dekoratorius kuris gauna norimą maršrutą, tam naudojame papildomą parametrą metodus.

Tada savo funkcijoje galime naudoti prašymas Tačiau norėdami gauti reikšmes, skirtingai nuo ankstesnio pavyzdžio, užuot reikalavę argumentų, turime nurodyti, kad gauname reikšmes iš formos. Pažvelkime į kodą, kurį ką tik paaiškinome.

 @ app.route ('/ post-view', Method = ['POST',]) def post_view (): value = request.form.get ('content', 'sample') return 'Tai rodinys naudojant POST ir gauna reikšmę:% s '% vertė
Galime pastebėti, kad tai beveik tas pats kodas, kaip aprašyta aukščiau, išskyrus jau minėtus skirtumus, tačiau pažiūrėkime, kas atsitiks, jei kodą paleisime tiesiogiai naršyklėje:

DIDELIS

Kaip mes tik nurodome, kad galime gauti metodą POST, kai prieinama per GET mūsų programa atmeta įrašą ir todėl siunčia mums kodą 405 Metodas neleidžiamas, todėl be reikšmių, gautų iš POST užklausos, šis rodinys nerodys jokios informacijos.

GET ir POST derinimas rodinyje


Kadangi skirtingo požiūrio apdorojimas kiekvienam metodui ne visada yra tai, ko norime, galime naudoti abu metodus tame pačiame rodinyje, tai labai naudinga, ypač kai norime apdoroti formas, pavyzdžiui, naudojant metodą GET parodome formą ir su POST mes apdorojame to paties siuntą.

Norėdami naudoti šį režimą, turime tik pridėti GET sąraše, į kurį kreipėmės metodus apibrėžiant dekoratorius su keliu, pažiūrėkime žemiau esantį kodą:

 @ app.route ('/ view', Method = ['GET', 'POST',]) def view (): if request.method == "GET": return '' 'Rodyti peržiūras' '' else: value = request.form.get ('content', 'sample') return 'Tai rodinys naudojant GET ir POST, gaunantis reikšmę:% s'% vertė
Kviečiant maršrutą iš naršyklės naudojant metodą GET gauname štai ką:

Tada, parašę ką nors teksto lauke ir paspausdami „Enter“, mes siunčiame formą tuo pačiu keliu, bet su metodu POST, kuris suteikia mums tokį rezultatą:

Čia mes parašėme tikrą funkcijomis pagrįstą vaizdą, kuris leidžia mums naudoti ir pasinaudoti abiem metodais HTTP atlikti mūsų operacijas.

Vaizdai pagal klasę


Nors funkcijų kūrimas, nors ir tarnauja mūsų tikslams, kartais yra labai sudėtingas ir gali turėti daugiau kodo nei reikia, Kolba įvykdė kvietimus klasėmis pagrįstas pažiūras, sąvoka, iš kurios jis pasiskolino Django, ir tai leidžia mums rašyti klases, su kuriomis sukursime peržiūras, šios klasės gali būti bendrosios, su kuriomis mes galime paveldėti, jei norime.

Norėdami naudoti šio tipo komponentus, pirmiausia turime importuoti iš kolba. peržiūros, kur klasė Peržiūrėti Tai bendroji klasė, kuri leis mums pridėti pagrindines funkcijas, kad galėtume išsiųsti maršrutus ir apibrėžti metodus.

Kuriame požiūrį į klasę


Šiame pavyzdyje mes sukursime tą patį vaizdą, kurį padarėme ankstesniame pavyzdyje, tačiau taikydami klasėmis pagrįstą metodą, tokiu būdu galime nustatyti abiejų formų skirtumus, atminkite, kad nors pavyzdžio kode jis ir nėra, mes padarėme importas „View“ klasės.

Pažvelkime į mūsų pavyzdžio kodą:

 class ViewClass (View): metodai = ['GET', 'POST',] def dispatch_request (self): if request.method == "GET": return '' 'Rodyti rodinius' '' if request.method == " POST ": value = request.form.get ('content', 'sample') return 'Tai rodinys, naudojant GET ir POST, gaunantis reikšmę:% s'% valorapp.add_url_rule ('/ view-class', view_func = VistaClase.as_view ('view-class'))
Tai yra pagrindinė šio požiūrio stiliaus forma, tačiau mes matome, kad mes nebepriklausome nuo dekoratorius, tai, ką mes darome, vadiname metodu dispatch_request ir mes praėjome pro jį savarankiškai kad gautume tą patį objektą, galime nustatyti gautas užklausas, tada nurodome, kad gausime abu metodus ir galiausiai apibrėšime savo elgesį, kiekvienos naršyklės rezultatas bus toks pat kaip ir ankstesnio, turėsime laukelyje ir jį išsiųsdami gausime nurodytą atsakymą.

O kas, jei norime parašyti daug švaresnį kodą? Tam galime panaudoti klasę MethodView apie Kolba tai leidžia klasėje sukurti metodus metodams apibrėžti HTTP paprastesniu būdu.

Pažiūrėkime šį pavyzdį, kuriame perrašome ankstesnį kodą, kad galėtume naudoti šį režimą:

 class ViewClass (MethodView): def get (self): return '' 'Show Views' 'def post (self): value = request.form.get (' content ',' sample ') return' Tai rodinys naudojant GET ir POST, kurie gauna reikšmę:% s '% valorapp.add_url_rule ('/ view-class ', view_func = ViewClass.as_view (' view-class '))
Kaip matome, atsisakėme metodų, kuriuos gausime, apibrėžimo, be to, šio metodo nebevartojame išsiuntimas, mes tiesiog apibrėžiame, ką darysime metodu POST, ir ką mes veiksime GET, taip suteikdami daug daugiau valymo mūsų regėjimui.

Vis dar diskutuojama, kad jei geriau vaidmenimis pagrįstos pažiūros bangos klasės pagrindu, bet tikrai nėra vieno geresnio už kitą, yra tik du darbo būdai, rekomenduojama, kad jei vaizdas yra labai paprastas, galime tai padaryti naudodami funkcijas, o jei jis jau turi išsamesnę logiką, tai darome su klasėmis .

Tuo baigėme šį vadovėlį, kuriame sukūrėme svarbią bazę, žinodami, kaip veikia požiūriai ir kaip galime dirbti su skirtingais jų metodais HTTP, nes tai yra pagrindas, kurį galime naudoti kurdami pažangesnes programas.

Padėsite svetainės plėtrą, dalintis puslapį su draugais

wave wave wave wave wave