Pogled na zgradu u Flasku

Unutar modela ili paradigme razvoja koje predlaže BocaJedna od najvažnijih točaka je upravljanje prikazima, jer nam oni omogućuju definiranje načina na koji će korisnik komunicirati s našom stranicom ili aplikacijom.

Najjednostavniji način rada s prikazom je definiranje operacije izravno u definiciji njenog puta, međutim to nije uvijek korisno ili primjereno, osobito ako gradimo velike aplikacije.

ZahtjeviPotrebna nam je funkcionalna instalacija Boca a iz razloga kompatibilnosti potrebna nam je verzija veća od one 0.7 budući da je jedna od komponenti s kojima ćemo raditi bila uključena u okvir tek nakon navedene verzije. Također moramo pokrenuti aplikaciju ili imati neku aplikaciju Boca tako da možemo uključiti primjere u odjeljak prikaza i na taj način ih moći izvršiti preglednikom.

Pogledi temeljeni na ulogama


To je jedan od najjednostavnijih načina za izgradnju interakcije s korisnikom, samo moramo napisati funkciju i ukrasiti je rutom, što čini kada usmjerivač Boca primi zahtjev, provjerava postoji li funkcija koja čeka na spomenutu rutu, a zatim ga dobije, izvršava ga.

Općenito, ova vrsta pogleda zahtijeva barem metodu DOBITI od HTTPMeđutim, kao dobra praksa i iz sigurnosnih razloga, ako želimo dodati vrijednosti našoj strukturi postojanosti podataka, možemo također koristiti metodu POST.

Stvaranje prikaza pomoću GET -a


Metodom ćemo stvoriti prikaz DOBITIDa biste to učinili, jednostavno morate definirati njezin naziv u funkciji i dodijeliti joj rutu, a zatim ćemo unutar funkcije postaviti naš sadržaj, pogledajmo sljedeći kôd kako bismo se ilustrirali.
 @ app.route ('/ view-get') def view (): value = request.args.get ('content', 'sample') return 'Ovo je prikaz koji koristi GET i prima vrijednost:% s'% vrijednost
U kodu tada vidimo kako koristimo dekorater Kako bismo naznačili koju rutu čekamo, definiramo odgovarajuću funkciju i unutar nje upućujemo poziv zahtjev na argumente koje je primio DOBITI, u ovom slučaju tražimo argument koji se zove sadržaj i dodjeljujemo ga varijabli koja se zove vrijednost, ako ovaj argument ne postoji, "uzorak" će biti postavljen kao zadana vrijednost, i na kraju vraćamo tekst i prosljeđujemo sadržaj vrijednosti .

Ako pokrenemo naš primjer u pregledniku, dobili bismo sljedeće:

Stvaranje prikaza pomoću POST -a


Što se događa ako želimo primiti osjetljive podatke, a ne želimo ih proslijediti kroz parametre u URL -u, jer u tim slučajevima moramo koristiti metodu POST, jer ona šalje podatke skrivene od pogleda korisnika, naravno tamo su druge sigurnosne mjere koje bismo trebali koristiti, ali trenutno nam nisu potrebne za ovaj slučaj.

Da biste izgradili pogled koji prima podatke putem POST -a, morate samo navesti očekivanu metodu u dekorater koji prima željenu rutu, za to koristimo dodatni parametar metodama.

Tada unutar naše funkcije možemo koristiti zahtjev za dobivanje vrijednosti, međutim, za razliku od prethodnog primjera, umjesto da zahtijevamo argumente, moramo naznačiti da vrijednosti primamo iz obrasca. Pogledajmo kod za ono što smo upravo objasnili.

 @ app.route ('/ post-view', methods = ['POST',]) def post_view (): value = request.form.get ('content', 'sample') return 'Ovo je prikaz koji koristi POST i prima vrijednost:% s '% vrijednost
Možemo primijetiti da je to gotovo isti kod kao gore, osim već spomenutih razlika, ali da vidimo što će se dogoditi ako kôd pokrenemo izravno u svom pregledniku:

POVEĆAJTE

Kako samo specificiramo da možemo primiti metodu POST, prilikom pristupa putem DOBITI naša aplikacija odbija unos i stoga nam šalje kôd 405 Metoda nije dopuštena, pa bez vrijednosti koje dolaze iz POST zahtjeva ovaj prikaz neće prikazivati ​​nikakve podatke.

Kombinirajući GET i POST u prikazu


Budući da rukovanje različitim pogledima za svaku metodu nije uvijek ono što želimo, možemo koristiti obje metode u istom prikazu, to je vrlo korisno, osobito kada želimo obraditi obrasce, na primjer, s metodom DOBITI pokazujemo formu i sa POST obrađujemo pošiljku iste.

Da bismo koristili ovaj način rada, moramo samo dodati DOBITI na popisu na koji smo prošli metodama pri definiranju dekorater sa stazom, pogledajmo donji kod:

 @ app.route ('/ view', methods = ['GET', 'POST',]) def view (): if request.method == "GET": return '' 'Show Views' '' else: value = request.form.get ('content', 'sample') return 'Ovo je prikaz pomoću GET -a i POST -a koji prima vrijednost:% s'% value
Prilikom pozivanja rute iz preglednika metodom DOBITI dobivamo sljedeće:

Zatim upisivanjem nečega u tekstualno polje i pritiskom na Enter šaljemo obrazac na isti put, ali s metodom POST, što nam daje rezultat poput sljedećeg:

Ovdje smo tada napisali pravi prikaz temeljen na funkcijama, koji nam omogućuje da koristimo i iskoristimo obje metode HTTP da obavljamo svoje operacije.

Pogledi na temelju klase


Budući da je stvaranje funkcija, iako služe našim ciljevima, ponekad vrlo nezgrapno i pogodno je imati više koda nego što je potrebno, Boca realizirao pozive klasni pogledi, koncept od kojeg je posudio Django, a to nam omogućuje pisanje klasa pomoću kojih ćemo generirati poglede, te klase mogu biti generičke s kojima možemo nasljeđivati ​​ako želimo.

Da bismo koristili ovu vrstu komponente, prvo moramo uvesti iz flask.views, gdje je klasa Pogled To je generička klasa koja će nam omogućiti dodavanje osnovnih funkcionalnosti kako bismo mogli slati rute i definirati metode.

Stvaranje našeg prikaza temeljenog na klasi


U ovom primjeru stvorit ćemo isti pogled koji smo imali u prethodnom primjeru, ali iz pristupa zasnovanog na klasama, na ovaj način možemo ustanoviti razlike između oba oblika, imajte na umu da, iako se to ne pojavljuje u primjeru koda, napravili smo uvoz razreda View.

Pogledajmo kod za naš primjer:

 class ViewClass (View): methods = ['GET', 'POST',] def dispatch_request (self): if request.method == "GET": return '' 'Show Views' '' if request.method == " POST ": value = request.form.get ('content', 'sample') return 'Ovo je prikaz pomoću GET-a i POST-a koji prima vrijednost:% s'% valorapp.add_url_rule ('/ view-class', view_func = VistaClase.as_view ('view-class'))
Ovo je najosnovniji oblik ovog stila gledišta, međutim vidimo da više ne ovisimo o dekorater, ono što radimo nazivamo metodom otpremni_zahtjev i prošli smo pored njega sebe tako da prima isti objekt s ovim možemo odrediti zahtjeve koje primamo, zatim označavamo da ćemo primiti obje metode i na kraju definiramo svoje ponašanje, rezultat po pregledniku bit će isti kao i prethodni, imat ćemo polje i kad ga pošaljemo primit ćemo navedeni odgovor.

Ali što ako želimo napisati mnogo čistiji kod? Za to možemo koristiti klasu MethodView od Boca što nam omogućuje stvaranje metoda unutar klase za definiranje metoda HTTP na jednostavniji način.

Pogledajmo sljedeći primjer gdje smo prepisali prethodni kôd za korištenje ovog načina rada:

 class ViewClass (MethodView): def get (self): return '' '' Prikaži prikaze '' 'def post (self): value = request.form.get (' content ',' sample ') return' Ovo je prikaz pomoću GET i POST koji prima vrijednost:% s '% valorapp.add_url_rule ('/ view-class ', view_func = ViewClass.as_view (' view-class '))
Kao što vidimo, odustali smo od definicije metoda koje ćemo primiti, osim toga više ne koristimo metodu otpremanje, jednostavno definiramo što ćemo učiniti u metodi POST, i ono što ćemo učiniti u GET -u, dajući tako mnogo više očiju našem vidu.

Još uvijek se vodi rasprava da, ako je bolje stavovi temeljeni na ulogama valovi klasno, ali doista ne postoji jedan bolji od drugog, postoje jednostavno dva načina rada, preporuka je da ako je pogled vrlo jednostavan možemo to učiniti s funkcijama, a ako već ima potpuniju logiku, učinit ćemo to s klasama .

Ovime smo završili ovaj vodič u kojem smo izgradili važnu bazu znajući kako pogledi rade i kako možemo raditi s njihovim različitim metodama HTTP, budući da je to temelj koji možemo koristiti za izradu naprednijih aplikacija.

wave wave wave wave wave