Sommario
L'acquisizione dei dati dell'utente è vitale per le applicazioni web, questa acquisizione può essere costituita da dati predefiniti, come i valori in seleziona i campi o tasti della radio, poiché può anche essere testo aperto come testo di input o area di testo quando ci aspettiamo informazioni un po' più estese.Ciò che tutti questi modi di acquisire dati hanno in comune, a parte il fatto che sono elementi HTML, è che devono essere all'interno di un modulo, un modulo è un contenitore in cui posizioniamo elementi che acquisiscono i dati dell'utente e quindi possiamo inviarli attraverso il Metodi HTTP GET o INVIARE quest'ultimo è il più utilizzato.
I campi del nostro modulo
Il generazione di una forma in Django È molto simile alla generazione di un modello, questo perché si avvale anche della forma dichiarativa con la quale assegniamo ogni elemento come attributo della classe form.
RicordareNonostante la suddetta somiglianza, modelli e moduli presentano alcune importanti differenze, una di queste è che differiscono nel modo in cui possono trovare e riconoscere i campi, ad esempio un modello controlla se un attributo ha un metodo contribuire_a_class(), invece il form cerca se l'attributo è effettivamente un campo e oltre a ciò verifica se è un'istanza di Django.forms.fields.Field.
Generazione di moduli
Per generare un form dobbiamo prima creare la classe che lo conterrà, rendiamo la nostra classe form una sottoclasse del modulo modulo e lo aggiungiamo in un nuovo file chiamato forme.py all'interno della cartella dell'applicazione.
All'interno di questa creeremo una classe Meta, all'interno di questa classe indicheremo a quale modello farà riferimento il nostro form, poi nella nostra vista indicheremo la classe del form ed infine svuoteremo il template dell'applicazione. Vediamo nell'immagine seguente una classe form:
L'ultimo passo è mostrare il modulo nel modello corrispondente, per questo useremo il variabile di contesto del modulo per poter stampare i campi. Nel codice seguente possiamo vedere cosa intendiamo:
INGRANDIRE