Menu
CoddyTech

Vérifier un champ

Fait partie de la section Formulaires du Journey Django de Coddy. Leçon 10 sur 20.

Le formulaire accepte des événements datés de l’année dernière. Les règles intégrées connaissent les types et les limites, mais pas votre site. Une règle personnalisée portant sur un champ se place dans une méthode nommée clean_ suivie du nom du champ. Voici un formulaire d’inscription qui réserve le nom admin au personnel :

class SignupForm(forms.Form):
    username = forms.CharField(max_length=30)

    def clean_username(self):
        username = self.cleaned_data["username"]
        if username.lower() == "admin":
            raise forms.ValidationError("That name is reserved.")
        return username

is_valid() appelle cette méthode après les vérifications propres au champ ; la valeur est donc déjà convertie : un DateField fournit une date. Lever une forms.ValidationError rejette le champ, et le message apparaît en dessous.

La méthode doit return la valeur : ce qu’elle renvoie est placé dans cleaned_data. Sans le return, la valeur devient None.

challenge icon

Défi

Facile

Dans EventForm, refuse une date antérieure à aujourd’hui avec le message The date cannot be in the past. Une date d’aujourd’hui convient.

Appuie sur Exécuter et ajoute un événement daté d’hier.

Essayez vous-même

from django import forms


class EventForm(forms.Form):
    title = forms.CharField(max_length=100)
    date = forms.DateField()
    place = forms.CharField(max_length=100)
    description = forms.CharField(widget=forms.Textarea, required=False)
    capacity = forms.IntegerField(min_value=1)

Toutes les leçons de Formulaires

Entraînez-vous par vous-même : Playground Django