Django - išplėstinės formos

Turinys
Kuriant formas galima žymiai palengvinti naudojant bendrosios klasės apie Django tačiau mes ne visada ketiname juos naudoti, nes kartais mums reikia sukurti visą mūsų logiką.
Laimei, viduje Django Taip pat galime sukurti būdą, kaip apdorosime savo formas ir kaip valdyti jų logiką, tokiu būdu pasieksime daug labiau pritaikytų programų ir arčiau savo tikslų.
Duomenų prijungimas prie formos
Mes žinome, kad forma yra būdas paimti duomenis iš vartotojo, todėl turime dvi jo būsenas, su duomenimis ir be duomenųKai formoje yra duomenų, tai yra tada, kai ketiname atlikti savo operacijas, kita vertus, kai joje nieko nėra, turime tiesiog nekreipti į tai dėmesio duomenų apdorojimui.
PratimasMes atliksime šį pratimą iš interaktyvios konsolės Django, mes sukursime formą ir su is_bound () metodas Patvirtinsime, ar ji turi susietus duomenis, tokiu būdu galime šiek tiek daugiau pamatyti, kaip forma elgiasi rėmuose, o rezultatus pamatysime žemiau esančiame paveikslėlyje:

Kaip matome pavyzdyje, tik tada, kai perduodame reikšmes formai naudodami metodą is_bound, gauname Tikras atsakymas.
Patvirtinkite duomenis
Kaip žinome, jei dirbame žiniatinklyje, vartotojo įvesti duomenys gali būti veiksmingiausia ataka prieš mūsų programą, nes dėl nežinojimo ji gali įvesti bet kokio tipo formatus, kurių mūsų programa nėra pasirengusi priimti ir todėl gali baigtis lemtinga klaida, kad to išvengtume, prieš apdorodami duomenis visada turime įsitikinti, kad jie yra saugūs, todėl galime naudoti šiuos dalykus:
 def my_view (užklausa): if request.method == 'POST': form = MyForm (request.POST, request.FILES) if form.is_valid (): #Jei duomenys čia galioja, galime tęsti taikydami savo programos logiką : # Priešingu atveju mes pateikiame objektą tik be duomenų formos = MyForm ()

Kaip matome pavyzdyje, mes padarome klasės pavyzdį MyForm ir mes prisijungiame prie duomenų, kurie pateikiami prašymas, naudojant POST metodą ir tokio tipo Failai Jei pateikiame kito tipo atvaizdą ar failą, atsižvelgiant į mūsų modelį, reikia įvertinti tai, ką suteikia mūsų forma, tam naudojame is_valid () metodas, tuo įsitikiname, kad jei eilutė ateina ten, kur turi būti skaičius, informacija atmetama ir neleidžiama pasiekti duomenų bazės, kur ji gali sukelti lemtingą klaidą.
Vaizdai pagal klasę
Remdamiesi tuo, ką matėme ankstesniame pavyzdyje, dabar matome, kaip galime pritaikyti kažką panašaus naudodami Vaizdai pagal klasę ir tokiu būdu naudoti pagrindines priemones.
Jei naudosime FormView generinis iš Django galime pasiekti kažką panašaus į šį kodą:
 iš Django.shortcuts importuoti atvaizdavimą, peradresuoti iš Django.views.generic.edit importuoti FormView klasę MyForm (FormView): form_class = MyForm template_name = 'form.html' success_url = ' / success /' def form_valid (self, forma): forma .save () return super (MyView, self) .form_valid (forma)

Kaip matome, pažangus formų naudojimas leidžia padaryti programas dinamiškesnes ir labiau suasmenintas, o tai leidžia pasiekti neįtikėtinų rezultatų vos keliomis kodo eilutėmis.Ar jums patiko ir padėjo ši pamoka?Galite apdovanoti autorių paspausdami šį mygtuką, kad suteiktumėte jam teigiamą tašką
wave wave wave wave wave