Sadržaj
Kada definiramo oblik u Django Osim što mu govorimo koji će model uzeti i polja koja bi trebao prikazati, možemo mu reći i kakvo ponašanje i koju vrstu HTML definirat će svako polje, znamo da je na primjer a CharField Trebao bi nam pokazati unos vrste teksta, ali što ako želimo da taj unos teksta već dolazi s klasom tako da se ponaša prema CSS ili je taj element zamijenjen drugim elementom.Da bismo to postigli, imamo widgete a možemo ih definirati u vrijeme izrade klase obrasca u našoj aplikaciji.
HTML ponašanje
Kao što smo spomenuli, Django prikazuje polja obrasca u HTML kod a za to će, ovisno o vrsti definiranog polja, biti prikazan HTML element pri generiranju obrasca, ako želimo dodatne funkcionalnosti u našim poljima Django nudi nam widgete kako bi mogli uključiti te dodatne funkcionalnosti.
Kako se to postiže?To je postignuto jer svaki polje definirano u Djangu u obliku ima atribut widgeta i stoga u trenutku instalacije možemo dati vrijednost navedenom atributu i natjerati ga da radi u skladu s načinom na koji to želimo.
Prilagođeni widgeti
Drugi aspekt koji možemo uzeti u obzir jest da ako widgete od DjangoKao i kod vrsta polja, možemo ih prilagoditi tako da možemo postići specifična ponašanja koja odgovaraju našoj aplikaciji.
Na primjer, možemo stvoriti vrsta widgeta koji je integriran s Javascript kalendar koje smo razvili ili koje se posebno traže za naš obrazac.
NasljeđivanjeZa prilagođeni widget dobiti očekivane osnovne funkcionalnosti koje bi trebale naslijediti Django.forms.widgets.Widget međutim to nije obvezno, nakon što se naslijedi iz ove klase možemo nadjačati potrebne metode za dobivanje naše funkcionalnosti.
Praktična aplikacija
Pogledajmo ispod primjer gdje ćemo generirati obrazac koristeći widgete Kako bismo definirali neke aspekte polja, ovu ćemo vježbu izvesti u interaktivnoj konzoli datoteke Piton:
Na slici tada vidimo da smo u konzoli definirali klasu obrasca, a unutar smo postavili dva polja, pa izbjegavamo instanciranje iz modela, prvo polje za koje kažemo da je polje IntegerField, s ovim će se u trenutku slanja potvrditi samo brojevi, ali ono što nas zanima je drugo polje, to mu kažemo da ima widget i da je oblici.TekstareaAko ga pogledamo, definirali smo ga kao CharField, to nam govori da bi u HTML -u trebao biti unos teksta, međutim sa widget Promijenili smo ga, kada vidimo rezultirajući HTML, imamo da je to HTML tekstualno područje.
Ako želimo definirajte polje s prilagođenim widgetom Možemo deklarirati klasu s ulaznim tipom, a zatim je postaviti u obrazac, pogledajmo ovaj kod kako bismo razumjeli:
klasa PercentageInput (forms.TextInput): def render (self, name, value, attrs = None): vraćanje '% s %%'% super (PercentageInput, self) .render (ime, vrijednost, attrs)
Tada ga u obliku nazivamo:
popust = obrasci.IntegerField (widget = PercentageInput ())
Kao što vidimo, prilično je lako dodati nove vrste widgete na našu aplikaciju.Je li vam se svidio i pomogao ovaj vodič?Autor možete nagraditi pritiskom na ovaj gumb kako biste mu dali pozitivan bod