Cuprins
Când definim o formă în Django În afară de asta, îi spunem ce model urmează și câmpurile pe care ar trebui să le arate, îi putem spune și ce comportament și ce tip de HTML va defini fiecare câmp, știm că de exemplu a CharField Ar trebui să ne arate o intrare de tip text, dar dacă vrem ca intrarea de tip text să vină deja cu o clasă, astfel încât să aibă un comportament de CSS sau acel element este înlocuit cu un alt element.Pentru a realiza acest lucru avem widgeturi și le putem defini în momentul realizării clasei formularului în aplicația noastră.
Comportament HTML
După cum am menționat, Django afișează câmpuri de formular în Cod HTML și pentru aceasta, în funcție de tipul de câmp definit, va fi elementul HTML care va fi afișat la generarea formularului, dacă dorim funcționalități suplimentare în câmpurile noastre Django ne oferă widgeturi pentru a putea încorpora aceste funcționalități suplimentare.
Cum se realizează?Acest lucru se realizează pentru că fiecare câmpul definit în Django într-un formular are un atribut widget și, prin urmare, în momentul instanțierii acestuia, putem da valoare atributului menționat și îl putem face să funcționeze în funcție de modul în care îl dorim.
Widgeturi personalizate
Un alt aspect pe care îl putem lua în considerare este că dacă widgeturi de DjangoLa fel ca în cazul tipurilor de câmp, le putem personaliza, astfel încât să putem realiza comportamente specifice care se potrivesc aplicației noastre.
De exemplu, putem crea un tip widget care este integrat cu un Calendar Javascript pe care le-am dezvoltat sau care este solicitat în mod special pentru formularul nostru.
MoştenirePentru o widget personalizat obține funcționalitățile de bază așteptate ar trebui să moștenească de la Django.forms.widgets.Widget cu toate acestea, acest lucru nu este obligatoriu, odată ce este moștenit din această clasă, putem anula metodele necesare pentru a obține funcționalitatea noastră.
Aplicație practică
Să vedem mai jos un exemplu în care vom genera un formular folosind widgeturi Pentru a defini unele aspecte ale câmpurilor, vom face acest exercițiu în consola interactivă a Piton:
Vedem în imagine atunci că în consolă am definit o clasă de formular și în interior am amplasat două câmpuri, astfel evităm instanțierea dintr-un model, primul cod cod pe care îl spunem este un câmp IntegerField, cu aceasta va fi validat doar la numere în momentul trimiterii, dar ceea ce ne interesează este al doilea câmp, aceasta îi spunem că are un widget și că este un forme.TextareaDacă ne uităm la el, l-am definit ca un CharField, acest lucru ne spune că în HTML ar trebui să fie o introducere de text, totuși cu widget L-am schimbat, când vedem HTML rezultat, avem că este un HTML textarea.
Dacă vrem definiți un câmp cu un widget personalizat Putem declara o clasă cu un tip de intrare și apoi o plasăm în formular, să vedem acest cod, astfel încât să înțelegem:
class PercentageInput (forms.TextInput): def render (self, name, value, attrs = None): returnează '% s %%'% super (PercentageInput, self) .render (nume, valoare, attrs)
Apoi, în forma pe care o numim:
discount = forms.IntegerField (widget = PercentageInput ())
După cum putem vedea, este destul de ușor să adăugați noi tipuri de widgeturi la cererea noastră.V-a plăcut și ați ajutat acest tutorial?Puteți recompensa autorul apăsând acest buton pentru a-i oferi un punct pozitiv