La bibliothèque WTForms (création des formulaires en python)

la bibliothèque des formulaires en python avec django et flask

1. A propos de la bibliothèque WTForms

WTForms est une bibliothèque Python flexible pour la validation et le rendu de formulaires dans le développement web. Elle est couramment utilisée avec des frameworks comme Flask et Django pour gérer la création, la validation et le traitement des formulaires. L'usage de la bibliothèque WTForms simplifie grandement la gestion des formulaires en Python tout en offrant une sécurité et une flexibilité importantes.

2. Fonctionnalités principales de la bibliothèque WTForms

  • Définition de formulaires via des classes Python
  • Validation des données
  • Protection contre les attaques CSRF
  • Support de l'internationalisation (i18n)
  • Large gamme de types de champs

3. Utilisation de base de la bibliothèque WTForms

Installation

Création d'un formulaire simple

Utilisation avec Flask

4. Principaux types de champs courants

  1. StringField : Champ texte
  2. PasswordField : Champ mot de passe
  3. TextAreaField : Zone de texte multiligne
  4. IntegerField : Nombre entier
  5. FloatField : Nombre à virgule flottante
  6. BooleanField : Case à cocher
  7. RadioField : Boutons radio
  8. SelectField : Menu déroulant
  9. FileField : Téléchargement de fichier
  10. DateField : Date

5. Validateurs intégrés

WTForms inclut plusieurs validateurs prédéfinis:

  1. DataRequired() : Champ obligatoire
  2. Email() : Format d'email valide
  3. Length(min, max) : Longueur du texte
  4. EqualTo(nom_du_champ) : Doit correspondre à un autre champ
  5. NumberRange(min, max) : Doit être dans un intervalle
  6. Regexp(regex) : Doit correspondre à une expression régulière

6. Rendu des formulaires dans les templates

Exemple avec Jinja2 (Flask):

7. WTForms avec Django - Exemple Complet

Même si Django a son propre système de formulaires, vous pouvez utiliser WTForms avec Django si vous préférez ses fonctionnalités. Voici un exemple complet:

Installation

7.1 Création du formulaire

Dans un fichier forms.py:

7.2 Vue Django

Dans views.py:

7.3 Template HTML

Dans templates/inscription.html:

7.4 URLs

Dans urls.py:

Points importants avec Django

  1. CSRF Protection : N'oubliez pas le tag {% csrf_token %} dans vos templates
  2. Gestion des requêtes : WTForms utilise request.POST directement
  3. Validation : La méthode validate() fait toute la validation
  4. Rendu des erreurs : Affichez les erreurs dans le template comme montré

Avantages par rapport aux forms Django

  1. Syntaxe : Syntaxe souvent plus concise
  2. organisation: Meilleure séparation entre validation et traitement
  3. Validateurs prédéfinis : Fonctionnalités supplémentaires comme les validateurs prédéfinis
  4. Facilité d'usage : Plus facile à utiliser pour des cas complexes

Cependant, pour une intégration plus profonde avec Django (comme l'enregistrement automatique des models), les formulaires natifs de Django restent souvent préférables.

8. Méthodes et attributs principaux de WTForms

WTForms est doté de nombreuses méthodes permettant d'améliorer les formulaires. Ces méthodes fournissent une interface complète pour la gestion des formulaires, de la validation des données au rendu HTML.. Voici les principales méthodes et fonctionnalités associées à WTForms:

8.1 Méthodes principales de la classe Form

  1. Constructeur: __init__(formdata=None, obj=None, prefix='', **kwargs). Constructeur pour initialiser le formulaire
  2. formdata: données du formulaire (généralement request.form en Flask)
  3. obj: objet Python pour pré-remplir le formulaire
  4. prefix: préfixe pour les noms de champs
  5. validate() : Valide tous les champs du formulaire. Retourne True si la validation réussit pour tous les champs
  6. validate_on_submit() (Flask-WTF) : Combine is_submitted() et validate(). Retourne True si le formulaire a été soumis et est valide
  7. populate_obj(obj) : Remplit un objet avec les données du formulaire. Utile pour mettre à jour des modèles de base de données
  8. process(formdata=None, obj=None, **kwargs) : Traite les données du formulaire

8.2 Méthodes utiles des champs (Field)

  1. __call__(**kwargs): Rend le champ en HTML. Peut recevoir des attributs HTML supplémentaires
  2. validate(form, extra_validators=()) : Valide le champ spécifique
  3. process(formdata, data) : Traite les données pour ce champ spécifique

8.3 Méthodes pour la gestion des données

  1. data (propriété) : Dictionnaire contenant toutes les données du formulaire
  2. errors (propriété) : Dictionnaire des erreurs de validation par champ
  3. meta (attribut) : Contient la configuration du formulaire

8.4 Méthodes pour le rendu HTML

  1. hidden_tag() : Génère tous les champs cachés du formulaire (y compris CSRF)
  2. label(field_id, **kwargs) : Génère le label HTML pour un champ

8.5 Méthodes de validation personnalisée

Création de validateurs personnalisés:

from wtforms.validators import ValidationError

Méthodes pour les formulaires dynamiques

  1. append_entry() (pour FieldList) : Ajoute une nouvelle entrée à une liste de champs
  2. remove_entry(index) (pour FieldList) : Supprime une entrée spécifique

8.6 Exemple d'utilisation complète

 

 

Younes Derfoufi
CRMEF OUJDA

Leave a Reply