Guide

Validazione dei vari campi del Form con Django

Guida su come effettuare la validazione dei vari campi del Form con Django, in questo esempio vediamo come validare due numeri in modo specifico e tra di loro.

validazione-form-django

Come effettuare la validazione dei vari campi del form con Django

La validazione dei dati è un aspetto importantissimo di un sito web, ecco quindi una guida su come effettuare la validazione dei vari campi del form con Django.
In un’altra guida abbiamo spiegato come effettuare l’elaborazione di una richiesta POST, in quel caso proveniente da un Form.
In questo caso ci vogliamo soffermare su come effettuare la validazione specifica per ogni campo di un Form.

Esempio semplicissimo

Mettiamo di avere il seguente form:

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)

Vogliamo che il primo campo sia compreso tra 0 e 20.
Il secondo campo invece deve essere compreso tra 0 e 40.
Il secondo campo deve essere maggiore del primo.
Come fare? Semplicissmo.
Ecco il codice, facilissimo da capire:

from django import forms
# Il mio form mostrato all'inizio
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)
    # I metodi per validare il singolo dato devono avere questo formato clean_<nome_campo>(self)
    def clean_primo(self):
        """Metodo per verificare la validita del campo 'primo' """
        data = self.cleaned_data['recipients']
        numero = int(data)
        if numero < 0 or numero > 20:
            raise forms.ValidationError("Il numero non è compreso tra 0 e 20!")
        # Ritornare sempre data, anche se questa funzione non modifica nulla
        return data
    def clean_secondo(self):
        """Metodo per verificare la validita del campo 'secondo' """
        data = self.cleaned_data['recipients']
        numero = int(data)
        if numero < 0 or numero > 40:
            raise forms.ValidationError("Il numero non è compreso tra 0 e 40!")
        # Ritornare sempre data, anche se questa funzione non modifica nulla
        return data
    def clean(self):
        """Metodo per verificare i dati tra di loro, in questo caso per vedere se secondo è maggiore di primo"""
        cleaned_data = super().clean()
        primo = cleaned_data.get("primo")
        secondo = cleaned_data.get("secondo")
        if primo and secondo:
            # Fai qualcosa sono se entrambi i dati esistono.
            if int(secondo) > int(primo):
                raise forms.ValidationError("Il secondo campo non è maggiore del primo!")

In questo caso i campi del form erano testuali (CharField) quindi prima di verificare i dati li convertiamo in interi. Abbiamo fatto così per mantenere lo stesso form di esempio utilizzato su Coders Italia Forum.

Articoli correlati

Vedi tutti
creare blog aziendale

Creare un blog aziendale – in 4 passi, facilmente

Hai capito che per fare business conviene aprire un blog aziendale ma non sai da dove iniziare. Se ho indovinato, ho una bella notizia: in questo articolo ti spiegherò esattamente cosa fare – avrai aperto il tuo blog entro oggi! 1 – Blog aziendale, da zero con WordPress La prima cosa da fare è creare […]

Leggi articolo

Cosa rende Coders Italia differente

Perché Codersitalia?

Know-how da multinazionale tech, con tempi e costi da software house indipendente. Investimenti proporzionati al risultato e un'assistenza presente ed efficace.

Tecnologie avanzate, a misura di PMI Portiamo nelle piccole e medie imprese metodi, esperienza e tecnologie da contesti tech d'avanguardia, inclusa l'AI: soluzioni evolute, pratiche e senza investimenti da grande azienda. Innovazione accessibile per PMI
Costi proporzionati al risultato Evitiamo pacchetti gonfiati, moduli venduti a pezzi e aumenti difficili da giustificare. Il costo deve essere coerente con l'impatto reale per la vostra azienda. Costi proporzionati al valore
Gestione chiara e trasparente Niente ticket macchinosi o risposte vaghe: avete un referente, tempi chiari, aggiornamenti comprensibili e confini definiti tra incluso ed extra. Referente, tempi e confini chiari

Analisi gratuita

Richiedi un'analisi gratuita.

Analizziamo il contesto, i problemi principali e le possibili strade per intervenire con una soluzione proporzionata.

+39 02 73103 524