Menu
CoddyTech

Un formulaire Django

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

Envoyez le formulaire sans date et le site plante : Django ne peut pas convertir un texte vide en date. Vérifier chaque champ à la main nécessiterait du code pour chaque champ et chaque erreur.

Un formulaire Django décrit les champs une seule fois, dans forms.py, et chaque champ sait ce qu’il accepte. Le formulaire de réservation d’un restaurant :

from django import forms


class BookingForm(forms.Form):
    name = forms.CharField(max_length=50)
    day = forms.DateField()
    guests = forms.IntegerField()

Chaque champ est obligatoire, sauf indication contraire, et un CharField supprime d’abord les espaces, donc un nom composé uniquement d’espaces est considéré comme vide.

Dans la vue, créez le formulaire à partir des données reçues et appelez is_valid() : cette méthode vérifie chaque champ et renvoie True ou False. Ensuite, form.cleaned_data contient les valeurs converties en Python. Ainsi, cleaned_data["day"] est un datetime.date, et non du texte :

form = BookingForm(request.POST)
if form.is_valid():
    day = form.cleaned_data["day"]
challenge icon

Défi

Facile
  • Dans events/forms.py, écrivez EventForm : title et place sous forme de texte de 100 caractères au maximum, et date sous forme de date.
  • Dans new_event, vérifiez le POST avec ce formulaire. S’il est valide, créez l’événement à partir des valeurs converties et redirigez l’utilisateur. Sinon, affichez la page avec error défini sur Please check the form.

Appuyez sur Run et envoyez le formulaire sans date.

Essayez vous-même

from django import forms

Toutes les leçons de Formulaires

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