Exercices Concepts Web & Django Premier formulaire Django
🎉

Bravo!

Intermédiaire 🧠 Fondamentaux 20 XP 0 personnes ont réussi

Premier formulaire Django

Un formulaire Django est une classe qui definit les champs d'un formulaire HTML, gere la validation automatiquement, et nettoie les données. C'est un outil extremement puissant qui te fait gagner un temps fou.

Pour créer un formulaire, tu herites de django.forms.Form :

from django import forms

class MonFormulaire(forms.Form):
nom = forms.CharField(max_length=100)
email = forms.EmailField()
age = forms.IntegerField(min_value=0)

Pour valider les données, tu créés une instance avec un dictionnaire et tu appelles is_valid() :

form = MonFormulaire(data={'nom': 'Alice', 'email': 'alice@test.com', 'age': 25})
form.is_valid() # True
form.cleaned_data # {'nom': 'Alice', 'email': 'alice@test.com', 'age': 25}

Si les données sont invalides :

form = MonFormulaire(data={'nom': '', 'email': 'pas-un-email', 'age': -5})
form.is_valid() # False
form.errors # dictionnaire des erreurs par champ

Crée un formulaire ContactForm avec :
- name : CharField, max 100, label 'Nom'
- email : EmailField, label 'Email'
- subject : CharField, max 200, label 'Sujet'
- message : CharField, widget=forms.Textarea, label 'Message'

Le widget Textarea affiche un grand champ de texte au lieu d'un input classique.

Exemple :

form = ContactForm(data={'name': 'Alice', 'email': 'alice@test.com', 'subject': 'Bonjour', 'message': 'Coucou'})
form.is_valid() vaut True
form.cleaned_data['name'] vaut 'Alice'

Tests (4/5)

Formulaire valide
form = ContactForm(data={'name': 'Alice', 'email': 'alice@test.com', 'subject': 'Hello', 'message': 'Bonjour'})
assert form.is_valid() == True
Email invalide
form = ContactForm(data={'name': 'Alice', 'email': 'pas-email', 'subject': 'Hello', 'message': 'Bonjour'})
assert form.is_valid() == False
assert 'email' in form.errors
Champ vide
form = ContactForm(data={'name': '', 'email': 'a@b.com', 'subject': 'Hello', 'message': 'Bonjour'})
assert form.is_valid() == False
assert 'name' in form.errors
cleaned_data
form = ContactForm(data={'name': 'Bob', 'email': 'bob@test.com', 'subject': 'Test', 'message': 'Yo'})
form.is_valid()
assert form.cleaned_data['name'] == 'Bob' and form.cleaned_data['email'] == 'bob@test.com'

+ 0 tests cachés

Indices (3 disponibles)

solution.py