Exercices Concepts Web & Django Validation et nettoyage des entrées
🎉

Bravo!

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

Validation et nettoyage des entrées

Ne fais jamais confiance aux données envoyees par un utilisateur. C'est la regle d'or de la sécurité web. Django fournit des validators dans django.core.validators pour vérifier les données.

Voici quelques validators utiles :

from django.core.validators import (
validate_email, # vérifie le format email
URLValidator, # vérifie le format URL
RegexValidator, # vérifie un pattern regex
MinValueValidator, # vérifie une valeur minimale
MaxValueValidator, # vérifie une valeur maximale
)

Chaque validator leve une ValidationError si la valeur est invalide.

Écris une classe InputCleaner avec les méthodes :

- clean_email(self, email) : strip + lowercase + validation avec validate_email. Retourne l'email nettoye ou None si invalide.

- clean_url(self, url) : strip + validation avec URLValidator(). Retourne l'URL ou None si invalide.

- clean_username(self, username) : strip + validation avec RegexValidator pour accepter uniquement les lettres, chiffres et underscores (pattern r'^[a-zA-Z0-9_]+$'). Retourne le username ou None si invalide ou vide.

Exemple :

cleaner = InputCleaner()
cleaner.clean_email(' Alice@Example.COM ') retourne 'alice@example.com'
cleaner.clean_email('pas-un-email') retourne None
cleaner.clean_url('https://example.com') retourne 'https://example.com'
cleaner.clean_username('alice_42') retourne 'alice_42'

Tests (5/6)

Email valide nettoye
c = InputCleaner()
assert c.clean_email('  Alice@Example.COM  ') == 'alice@example.com'
Email invalide
c = InputCleaner()
assert c.clean_email('pas-un-email') is None
URL valide
c = InputCleaner()
assert c.clean_url('https://example.com') == 'https://example.com'
URL invalide
c = InputCleaner()
assert c.clean_url('pas une url') is None
Username valide
c = InputCleaner()
assert c.clean_username('alice_42') == 'alice_42'

+ 0 tests cachés

Indices (3 disponibles)

solution.py