Blog

django-copertina

Guida all'elaborazione e alla validazione dei dati POST con Django

Guide

Guida all'elaborazione e alla validazione dei dati POST con Django

Guida alle richieste HTTP POST con Django

Benvenuto in questa guida all’elaborazione e alla validazione dei dati POST con Django.
In questa breve guida andremo a spiegare come effettuare la validazione di dati POST di un form, il tutto utilizzando Python e Django
Partiamo subito.
Questo è il nostro from di Django:

from django import forms
class MioForm(forms.Form):
   primo = forms.CharField(label='Primo campo', max_length=100)
   secondo = forms.IntegerField(label='Secondo campo', max_length=100)
   terzo = forms.IntegerField(label='Terzo campo', max_length=100)

Dunque possiamo creare il nostro form in HTML:

<form action="/applicazione/url-della-tua-views/" method="post">
   {% csrf_token %}
   <label for="primo">Primo campo: </label>
   <input id="primo" type="text" name="primo" maxlength="100" required />
   <label for="secondo">Secondo campo: </label>
   <input id="secondo" type="text" name="secondo" maxlength="100" required />
   <label for="terzo">Terzo campo: </label>
   <input id="terzo" type="text" name="terzo" maxlength="100" required />
   <input type="submit" value="Submit" />
</form>

Oppure possiamo renderizzarlo con {{form}}, è uguale:

<form action="/applicazione/views-di-prova/" method="post">
   {% csrf_token %}
   {{ form }}
   <input type="submit" value="Invia dati" />
</form>

Tra i due esempi di codice HTML preferisco il primo, perchè rende più facile aggiungere il CSS ai vari elementi (nel secondo caso come vedete noi mettiamo {{form}} ed è Django a scrivere l’HTML al nostro posto). Andiamo avanti.
Ecco come sarà il views.py della nostra applicazione

def validazione_form(request): # Ovviamente l'urls.py rimanda l'url /applicazione/views-di-prova/ a questa views
   if request.method == 'POST':
       form = MioForm(request.POST, request.FILES)
       if not form.is_valid():
           # stampa qualche errore qui
       else:
           primo_campo = request.POST.get("primo", "")
           secondo_campo = request.POST.get("secondo", "")
           terzo_campo = request.POST.get("terzo", "")
           # ok, fai quello che devi fare

Fatto, ecco spiegato brevemente quello che succede: al click sul pulsante “Invia dati” viene inviata una richiesta HTTP Post all’indirizzo “<vostro_sito>/applicazione/views-di-prova/”. Il tuo urls.py rimanda alla views qui mostrata che attaverso la funzione is_valid() permette di capire se il form è stato validato correttamente o meno.
In questo caso abbiamo raccolto i dati da un form ma la procedura e identica per qualsiasi richiesta HTTP POST: con “if request.method == ‘POST’:” verifichiamo, nella views, che si tratti di una chiamata post e raccogliamo i vari dati con request.POST.get().
Ovviamente si possono anche effettuare chiamate AJAX dal client per poi dal server ritornare una HttpResponse con una parola o del testo in JSON.
Se vuoi vedere come fare per validare ciascun campo del form in modo particolare (es. un numero che deve essere compreso tra 0 e 20) guarda la nostra guida.
Alla prossima!

Leave your thought here

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Copyrighted Image