Sommario
La creazione di moduli può essere resa molto più semplice utilizzando il classi generiche di Django tuttavia, non li useremo sempre poiché a volte abbiamo bisogno di sviluppare la logica completa da parte nostra.fortunatamente dentro Django Possiamo anche creare il modo in cui elaboreremo i nostri moduli e come gestirne la logica, con questo otterremo applicazioni molto più personalizzate e più vicine ai nostri obiettivi.
Unire i dati al form
Sappiamo che il modulo è un modo per prendere dati dall'utente, quindi ne abbiamo due stati, con dati e senza datiQuando il modulo ha dati, è quando faremo le nostre operazioni, d'altra parte, quando non ha nulla, dobbiamo semplicemente ignorarlo per l'elaborazione dei dati.
EsercizioEffettueremo il seguente esercizio, dalla console interattiva di Django, creeremo un modulo e con il is_bound() metodo Convalideremo se ha un dato associato, in questo modo possiamo vedere un po' di più come si comporta il modulo all'interno del framework, vediamo i risultati nell'immagine qui sotto:
Come vediamo nell'esempio, solo quando passiamo i valori al form durante l'utilizzo del metodo is_bound è che otteniamo un Risposta vera.
Convalida dati
Come sappiamo, se lavoriamo sul web, i dati inseriti dall'utente possono essere la forma di attacco più efficace contro la nostra applicazione, questo perché per ignoranza può entrare in qualsiasi tipo di formato che la nostra applicazione non è pronta ad accettare e quindi può finire in un errore fatale, per evitare ciò dobbiamo sempre assicurarci che i dati siano al sicuro prima di elaborarli per questo possiamo usare quanto segue:
def my_view (request): if request.method == 'POST': form = MyForm (request.POST, request.FILES) if form.is_valid(): #Se i dati sono validi qui possiamo continuare con la nostra logica applicativa else : # Altrimenti presentiamo solo l'oggetto senza data form = MyForm()
Come vediamo nell'esempio facciamo un'istanza della classe MyForm e uniamo i dati che arrivano nel richiesta, con il metodo POST e quelli del tipo FILE Nel caso in cui portiamo un'immagine o un file di altro tipo, a seconda del nostro modello, ciò che porta il nostro modulo deve essere valutato per questo usiamo il metodo è_valido(), con questo ci assicuriamo che se una stringa arriva dove dovrebbe arrivare un numero, l'informazione viene rifiutata e non gli è permesso di raggiungere il database dove potrebbe causare un errore fatale.
Viste basate sulla classe
Con quello che abbiamo visto nell'esempio precedente ora possiamo vedere come possiamo applicare qualcosa di simile usando il Viste basate sulla classe e in questo modo utilizzare gli strumenti del framework.
Se usiamo il FormView generico di Django possiamo ottenere qualcosa di simile al seguente codice:
da Django.shortcuts import render, reindirizzamento da Django.views.generic.edit import FormView class MyForm (FormView): form_class = MyForm template_name = 'form.html' success_url = '/ success /' def form_valid (self, form): form .save() return super (MyView, self) .form_valid (form)
Come possiamo vedere, l'uso avanzato dei form ci permette di rendere le applicazioni più dinamiche e in modo più personalizzato, con le quali possiamo ottenere risultati incredibili con poche righe di codice.Ti è piaciuto e hai aiutato questo Tutorial?Puoi premiare l'autore premendo questo pulsante per dargli un punto positivo