Sommario
Quando definiamo una forma in Django Oltre a ciò gli diciamo quale modello prenderà e i campi che dovrebbe mostrare, possiamo anche dirgli quale comportamento e che tipo di HTML sta per definire ogni campo, sappiamo che per esempio a CharField Dovrebbe mostrarci un input di tipo di testo, ma cosa succede se vogliamo che quell'input di tipo di testo venga già fornito con una classe in modo che abbia un comportamento di CSS o quell'elemento è sostituito da un altro elemento.Per raggiungere questo obiettivo abbiamo il widget e possiamo definirli al momento della creazione della classe del modulo nella nostra applicazione.
Comportamento HTML
Come abbiamo accennato, Django visualizza i campi del modulo in codice HTML e per questo, a seconda del tipo di campo definito, sarà l'elemento HTML che verrà visualizzato durante la generazione del modulo, se desideriamo funzionalità aggiuntive nei nostri campi Django ci offre il widget per poter incorporare queste funzionalità extra.
Come si ottiene?Questo si realizza perché ciascuno il campo definito in Django in un form ha un attributo widget e quindi al momento di istanziarlo possiamo dare valore a detto attributo e farlo funzionare come vogliamo.
Widget personalizzati
Un altro aspetto che possiamo tenere in considerazione è che se il widget di DjangoCome con i tipi di campo, possiamo personalizzarli, in modo da poter ottenere comportamenti specifici che si adattano alla nostra applicazione.
Ad esempio possiamo creare a tipo di widget che è integrato con a Calendario Javascript che abbiamo sviluppato o che è specificamente richiesto per il nostro modulo.
EreditàPer un widget personalizzato ottenere le funzionalità di base previste dovrebbero ereditare da Django.forms.widgets.Widget tuttavia questo non è obbligatorio, una volta ereditato da questa classe possiamo sovrascrivere i metodi necessari per ottenere la nostra funzionalità.
Applicazione pratica
Vediamo di seguito un esempio in cui andremo a generare un form utilizzando il widget Per definire alcuni aspetti dei campi, faremo questo esercizio nella console interattiva di Pitone:
Vediamo nell'immagine poi che nella console abbiamo definito una classe form e all'interno abbiamo posizionato due campi, quindi evitiamo di istanziare da un modello, il primo campo cod diciamo che è un campo Campo intero, con questo verrà convalidato solo ai numeri al momento dell'invio, ma ciò che ci interessa è il secondo campo, questo gli diciamo che ha un widget e che è un forme.TextareaSe lo guardiamo, lo abbiamo definito come CharField, questo ci dice che nell'HTML dovrebbe essere un input di testo, tuttavia con il aggeggio L'abbiamo cambiato, quando vediamo l'HTML risultante abbiamo che è un Area di testo HTML.
Se vogliamo definire un campo con un widget personalizzato Possiamo dichiarare una classe con un tipo di input e questo poi posizionarlo all'interno del form, vediamo questo codice in modo da capire:
class PercentageInput (forms.TextInput): def render (self, name, value, attrs = None): return '% s %%'% super (PercentageInput, self) .render (name, value, attrs)
Quindi nella forma lo chiamiamo:
sconto = form.IntegerField (widget = PercentageInput ())
Come possiamo vedere, è abbastanza facile aggiungere nuovi tipi di widget alla nostra applicazione.Ti è piaciuto e hai aiutato questo Tutorial?Puoi premiare l'autore premendo questo pulsante per dargli un punto positivo