Les formulaires django

1. A propos de la classe ModelForm de Django

La classe ModelForm de Django est une classe d'assistance qui facilite la création de formulaires HTML à partir de modèles Django. Elle permet de générer automatiquement des formulaires en fonction des champs d'un modèle spécifié.
En utilisant la classe ModelForm, vous pouvez créer un formulaire qui correspond exactement à la structure et aux types de données définis dans votre modèle. Les champs du formulaire seront automatiquement créés en fonction des champs du modèle, et les types de champs seront adaptés en conséquence (par exemple, un champ de modèle CharField sera représenté par un champ de formulaire de type texte).
La classe ModelForm offre de nombreuses fonctionnalités pratiques. Elle peut gérer la validation des données saisies par l'utilisateur, la sauvegarde des données dans la base de données, la gestion des messages d'erreur, et bien plus encore. De plus, elle facilite la personnalisation des formulaires en permettant de spécifier des options telles que les champs à inclure ou à exclure, les libellés des champs, les widgets de formulaire personnalisés, etc.

2. Création d'un formulaire en utilisant la classe ModelForm

Pour simplifier, nous allons procéder à la création d'un formulaire pour une petite application de gestion des étudiants comprenant les champs suivants :

  1. Nom
  2. Email
  3. Section

Avant de commencer, veuillez:

  1. Créer un projet django nommé 'mysite'
  2. Créer une application nommée 'myapp'
  3. Créer une zone admin django

Et avant de passer à la création d'un modèle, il est nécessaire d'enregistrer votre application :
Ajoutez votre application au fichier mysite/settings.py:

3. Création du modèle de l'application

Créons le modèle via la classe au sein du fichier myapp/models.py:

Pour générer la table SQLite contenant les champs "name", "email" et "section", il est nécessaire d'effectuer les migrations requises :
Pour ce faire, exécutez les commandes suivantes en ligne de commande :

puis :

Ces commandes permettent à Django de créer les migrations basées sur les modifications apportées aux modèle de votre application, puis d'appliquer ces migrations pour créer ou mettre à jour la structure de la base de données. Cela garantit que votre table SQLite est synchronisée avec la définition de votre modèle.

Nous allons voir ici comment générer un formulaire de saisie contenant les champ:

 

  • name
  • email
  • section

 

d'une façon automatique à l'aide de la classe ModelForm.

4. Création du fichier form.py

Créons un fichier python nommé form.py au sein de l'application myapp et faisons l'import de la classe ModelForm depuis django.forms et la classe Student depuis myapp.models et créons ensuite une classe StudentsForm qui va servir pour générer le formulaire html:

5. Création du view

Editons ensuite le fichier views.py au sein de l'application myapp:




6. Configuration du fichier urls.py

Configurons ensuite le fichier urls.py au sein de l'application myapp:

7. Afficher le modèle au niveau du template

7.1 Configuration du répertoire du template

Au niveau du fichier settings.py du projet principal, veuillez configurer le répertoire du template en ajoutant le code suivant:

7.2 Création du formulaire au niveau du template

Veuillez maintenant créer un fichier index.html à la racine du dossier 'template/'

Il nous reste maintenant à coder le fichier index.html du template:

Et maintenant si on tape l'adresse url de l'application: http://127.0.0.1:8000/myapp/ on obtient:

django form model form students management-system

Remarque

Le formulaire ci-dessus est fonctionnel, vous pouvez vérifier qu'il insère les données correctement au sein de la base de donnée.



8. Affichage des données de la table Students

Pour afficher les données de la table myapp_students, il suffi t d'importer la classe Student depuis myapp.models:

et d'ajouter la valeur: Student.objects.all() au dictionnaire:

Code finale du views.py de l'application:

Code finale du fichier index.html du template:

Maintenant lancer le serveur et insérer queques données pour voir le résultat:

django form affichage sqlite-data in template-django

Remarque

On peut aussi arranger les résultats sur une table HTML afin d'améliorer l'affichage:

display sqlite data in django template

 

Younes Derfoufi
CRMEF OUJDA

Leave a Reply