Flask Academy · Leçon

Validateurs personnalisés et erreurs de champ

Écrivez des règles et présentez les messages aux utilisateurs.

Leçon 4 sur 413 étapes

Validateurs personnalisés et erreurs de champ est une leçon Flask Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Flask Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Flask Academy comprend 4 leçons au total.

Au-delà des éléments intégrés

Les validateurs intégrés couvrent les besoins de base, mais les applications réelles ont des règles particulières. Vous allez maintenant écrire des validateurs personnalisés et afficher des erreurs claires. ✍️

Se rappeler de l’ensemble standard

Vous connaissez déjà DataRequired, Length et Email. Les règles personnalisées s’ajoutent à celles-ci pour gérer une logique que la bibliothèque ne peut pas deviner.

from wtforms.validators import DataRequired, Length, Email

Directement dans les validateurs

Un validateur personnalisé n’est qu’une fonction placée dans la liste des validateurs du champ. Elle reçoit le formulaire et le champ à chaque vérification.

def not_admin(form, field):
    pass

name = StringField('Name', validators=[not_admin])

Lever ValidationError

Pour rejeter une valeur, levez ValidationError avec un message. WTForms l’intercepte et ajoute le texte à ce champ.

from wtforms.validators import ValidationError

def not_admin(form, field):
    if field.data == 'admin':
        raise ValidationError('Name is reserved.')

La convention validate_

Pour une règle portant sur un seul champ, ajoutez à la classe du formulaire une méthode nommée validate_fieldname. WTForms l’appelle automatiquement.

class SignupForm(FlaskForm):
    username = StringField('Username')

    def validate_username(self, field):
        if len(field.data) < 3:
            raise ValidationError('Too short.')

Valider avec la base de données

Ces méthodes peuvent exécuter n’importe quel code : consultez donc la base de données pour refuser un nom d’utilisateur déjà utilisé.

def validate_email(self, field):
    if User.query.filter_by(email=field.data).first():
        raise ValidationError('Email already used.')

Les erreurs sont rattachées au champ

Chaque message d’échec est ajouté à field.errors, une simple liste. Une liste vide signifie que le champ a été validé correctement.

form.username.errors  # ['Too short.']

Afficher les erreurs dans le gabarit

Parcourez les erreurs d’un champ dans Jinja pour les afficher. Les utilisateurs voient exactement quoi corriger juste à côté de la saisie.

{% for error in form.username.errors %}
  <span class="err">{{ error }}</span>
{% endfor %}

Toutes les erreurs en une fois

Pour obtenir un récapitulatif, utilisez form.errors. Après la validation, il associe chaque nom de champ à sa liste de messages.

form.errors  # {'username': ['Too short.']}

Des classes de validateurs réutilisables

Pour les règles que vous réutilisez, écrivez une classe avec une méthode __call__. Configurez-la une fois, puis ajoutez-la à plusieurs champs.

class NoSpaces:
    def __call__(self, form, field):
        if ' ' in field.data:
            raise ValidationError('No spaces allowed.')

Garder des messages utiles

De bons messages d’erreur indiquent à l’utilisateur comment résoudre le problème, au lieu de signaler simplement qu’une erreur s’est produite. La clarté inspire confiance.

Vérification rapide

Comment rejeter une valeur dans une fonction de validation personnalisée ?

Récapitulatif

Vous avez ajouté des règles directement, via des méthodes validate_fieldname et des classes réutilisables, levé ValidationError et affiché les messages de field.errors. 🌟

Gratuit pour commencer

Apprends Python avec un tuteur IA — gratuit

Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.

Cours
30
Leçons
120

Questions Fréquemment Posées

La leçon « Validateurs personnalisés et erreurs de champ » est-elle gratuite ?

Oui — le texte complet de « Validateurs personnalisés et erreurs de champ » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Flask Academy, passe à CoddyKit PRO. Le cours Flask Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Validateurs personnalisés et erreurs de champ » ?

Écrivez des règles et présentez les messages aux utilisateurs. Tu pratiques Flask Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Flask Academy ?

Aucune expérience préalable n'est requise. Flask Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « Validateurs personnalisés et erreurs de champ » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Flask Academy ?

Oui. Chaque leçon Flask Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Définir une classe FlaskForm
  2. Afficher et envoyer un formulaire
  3. validate_on_submit et jetons CSRF
  4. Validateurs personnalisés et erreurs de champ
← Retour à Flask Academy