Skats uz ēku kolbā

Tā piedāvātajā attīstības modelī vai paradigmā KolbaViens no svarīgākajiem punktiem ir skatu pārvaldība, jo tas ļauj mums noteikt veidu, kādā lietotājs mijiedarbosies ar mūsu lapu vai lietojumprogrammu.

Vienkāršākais veids, kā strādāt ar skatu, ir definēt darbību tieši tās ceļa definīcijā, tomēr tas ne vienmēr ir lietderīgi vai adekvāti, it īpaši, ja mēs veidojam lielas lietojumprogrammas.

PrasībasMums ir nepieciešama funkcionāla instalācija Kolba un saderības apsvērumu dēļ mums ir nepieciešama augstāka versija nekā tā 0.7 tā kā viena no sastāvdaļām, ar kuru mēs strādāsim, ietvarā nebija iekļauta tikai pēc minētās versijas. Mums ir arī jāuzsāk lietojumprogramma vai jābūt kādai lietojumprogrammai Kolba lai mēs varētu iekļaut piemērus skatu sadaļā un tādējādi tos izpildīt, izmantojot pārlūkprogrammu.

Uz lomām balstīti uzskati


Tas ir viens no vienkāršākajiem veidiem, kā veidot mijiedarbību ar lietotāju, mums tikai jāraksta funkcija un jāizrotā tā ar maršrutu. Kolba saņemot pieprasījumu, tas pārbauda, ​​vai ir kāda funkcija, kas gaida minēto maršrutu, un pēc tam, ja to saņem, izpilda to.

Parasti šāda veida uzskatiem ir nepieciešama vismaz metode GŪT no HTTPTomēr kā labu praksi un drošības apsvērumu dēļ, ja mēs vēlamies pievienot vērtības savai datu noturības struktūrai, mēs varam izmantot arī šo metodi POST.

Skata izveide, izmantojot GET


Izmantojot šo metodi, mēs izveidosim skatu GŪTLai to izdarītu, jums vienkārši jādefinē tās nosaukums funkcijā un jāpiešķir tai maršruts, tad funkcijas iekšpusē mēs ievietosim savu saturu, apskatīsim šādu kodu, lai sevi ilustrētu.
 @ app.route ('/ view-get') def view (): value = request.args.get ('content', 'sample') return 'Šis ir skats, izmantojot GET un saņem vērtību:% s'% vērtību
Kodā mēs redzam, kā mēs izmantojam dekorators Lai norādītu, kuru maršrutu mēs gaidām, mēs definējam atbilstošo funkciju un tajā veicam zvanu pieprasījumu uz saņemtajiem argumentiem GŪT, šajā gadījumā mēs meklējam argumentu, ko sauc par saturu, un piešķiram to mainīgajam, ko sauc par vērtību, ja šis arguments nepastāv, kā paraugs tiks ievietots paraugs, un visbeidzot mēs atgriežam tekstu un nododam vērtības saturu .

Ja mēs izpildām savu piemēru pārlūkprogrammā, mēs iegūtu sekojošo:

Skata izveide, izmantojot POST


Kas notiek, ja mēs vēlamies saņemt sensitīvus datus un mēs nevēlamies tos izlaist caur URL parametriem, jo ​​šajos gadījumos mums ir jāizmanto POST metode, jo tā nosūta datus, kas ir paslēpti no lietotāja skata, protams ir citi drošības pasākumi, kas mums būtu jāizmanto, bet šobrīd mums tie šajā gadījumā nav vajadzīgi.

Lai izveidotu skatu, kas saņem datus, izmantojot POST, jums ir jānorāda tikai paredzamā metode dekorators kas saņem vēlamo maršrutu, šim nolūkam mēs izmantojam papildu parametru metodes.

Tad mēs varam izmantot savas funkcijas ietvaros pieprasījumu tomēr, lai iegūtu vērtības, atšķirībā no iepriekšējā piemēra, tā vietā, lai pieprasītu argumentus, mums jānorāda, ka mēs saņemam vērtības no veidlapas. Apskatīsim kodu, ko mēs tikko paskaidrojām.

 @ app.route ('/ post-view', metodes = ['POST',]) def post_view (): value = request.form.get ('content', 'sample') return 'Šis ir skats, izmantojot POST un saņem vērtību:% s '% vērtība
Mēs varam pamanīt, ka tas ir gandrīz tāds pats kods kā iepriekš, izņemot jau minētās atšķirības, taču redzēsim, kas notiks, ja mēs tieši palaidīsim kodu savā pārlūkprogrammā:

PALIELINĀT

Kā mēs norādām tikai to, ka varam saņemt metodi POST, piekļūstot caur GŪT mūsu pieteikums noraida ierakstu un tāpēc nosūta mums kodu 405 Metode nav atļauta, tāpēc bez vērtībām, kas nāk no POST pieprasījuma, šajā skatā netiks rādīta nekāda informācija.

GET un POST apvienošana skatā


Tā kā dažādu metožu apstrāde ne vienmēr ir tā, kā mēs vēlamies, mēs varam izmantot abas metodes vienā skatā, tas ir ļoti noderīgi, it īpaši, ja mēs vēlamies apstrādāt veidlapas, piemēram, ar metodi GŪT mēs parādām formu un ar POST mēs apstrādājam tā paša sūtījumu.

Lai izmantotu šo režīmu, mums tikai jāpievieno GŪT sarakstā, uz kuru mēs nokļuvām metodes definējot dekorators ar ceļu, redzēsim kodu zemāk:

 @ app.route ('/ view', metodes = ['GET', 'POST',]) def view (): if request.method == "GET": atgriezties '' 'Rādīt skatus' '' else: vērtība = request.form.get ('content', 'sample') return 'Šis ir skats, izmantojot GET un POST, kas saņem vērtību:% s'% vērtība
Izsaucot maršrutu no pārlūkprogrammas ar metodi GŪT mēs iegūstam sekojošo:

Tad, ierakstot kaut ko teksta laukā un nospiežot Enter, mēs nosūtām veidlapu uz to pašu ceļu, bet ar metodi POST, kas dod mums šādu rezultātu:

Šeit mēs esam uzrakstījuši patiesu uz funkcijām balstītu skatu, kas ļauj mums izmantot un izmantot abas metodes HTTP lai veiktu mūsu operācijas.

Uz klasēm balstīti skati


Tā kā funkciju izveide, pat ja tās kalpo mūsu mērķiem, dažkārt ir ļoti apgrūtinoša un var būt vairāk kodu nekā nepieciešams, Kolba īstenoja aicinājumus uz klasi balstītus uzskatus, jēdziens, no kura viņš aizņēmies Django, un tas ļauj mums rakstīt klases, ar kurām mēs ģenerēsim skatus, šīs klases var būt vispārīgas, ar kurām mēs varam mantot, ja vēlamies.

Lai izmantotu šāda veida komponentus, mums vispirms ir jāimportē no kolba. skati, kur klase Skatīt Tā ir vispārīga klase, kas ļaus mums pievienot pamatfunkcijas, lai varētu nosūtīt maršrutus un definēt metodes.

Veidojam uz klasi balstītu skatu


Šajā piemērā mēs izveidosim to pašu skatu, ko mēs darījām iepriekšējā piemērā, bet, izmantojot klasi, šādā veidā mēs varam noteikt atšķirības starp abām formām, atcerieties, ka, lai gan tas nav redzams parauga kodā, mēs esam izveidojuši importēt no skata klases.

Apskatīsim mūsu piemēra kodu:

 klase ViewClass (skats): metodes = ['GET', 'POST',] def dispatch_request (self): if request.method == "GET": return '' 'Show Views' '' if request.method == " POST ": value = request.form.get ('content', 'sample') return 'Šis ir skats, kurā tiek izmantotas GET un POST un kas saņem vērtību:% s'% valorapp.add_url_rule ('/ view-class', view_func = VistaClase.as_view ('view-class'))
Šī ir šī viedokļa stila visvienkāršākā forma, tomēr mēs redzam, ka mēs vairs neesam atkarīgi no dekorators, ko mēs darām, saucam par metodi dispatch_request un mēs gājām viņam garām sevi lai tas saņemtu to pašu objektu ar šo, mēs varētu noteikt saņemtos pieprasījumus, tad mēs norādām, ka saņemsim abas metodes un visbeidzot mēs definējam savu uzvedību, rezultāts katrā pārlūkprogrammā būs tāds pats kā iepriekšējais, mums būs un nosūtot to, mēs saņemsim norādīto atbildi.

Bet ko tad, ja mēs vēlamies uzrakstīt daudz tīrāku kodu? Šim nolūkam mēs varam izmantot klasi MethodView no Kolba kas ļauj klasē izveidot metodes metožu definēšanai HTTP vienkāršākā veidā.

Apskatīsim šādu piemēru, kur mēs pārrakstām iepriekšējo kodu, lai izmantotu šo režīmu:

 class ViewClass (MethodView): def get (self): return '' 'Show Views' 'def post (self): value = request.form.get (' content ',' sample ') return' Šis ir skats, izmantojot GET un POST, kas saņem vērtību:% s '% valorapp.add_url_rule ('/ view-class ', view_func = ViewClass.as_view (' view-class '))
Kā redzam, mēs esam atteikušies no to metožu definīcijas, kuras mēs saņemsim, turklāt mēs vairs neizmantojam šo metodi nosūtīšana, mēs vienkārši definējam, ko darīsim metodē POST, un ko mēs darīsim GET, tādējādi nodrošinot mūsu redzei daudz vairāk tīrīšanas.

Joprojām notiek debates, ka, ja ir labāk uz lomām balstītus uzskatus viļņi uz klasi, bet patiesībā nav neviena labāka par otru, ir vienkārši divi darba veidi, ieteikums ir tāds, ka, ja skats ir ļoti vienkāršs, mēs to varam izdarīt ar funkcijām un, ja tam jau ir pilnīgāka loģika, mēs to darām ar klasēm .

Ar to mēs esam pabeiguši šo apmācību, kurā esam izveidojuši svarīgu bāzi, zinot, kā darbojas uzskati un kā mēs varam strādāt ar dažādām metodēm HTTP, jo tas ir pamats, ko mēs varam izmantot, lai izveidotu sarežģītākas lietojumprogrammas.

Jums palīdzēs attīstību vietā, daloties lapu ar draugiem

wave wave wave wave wave