OUJOOD.COM
Manipuler des données via le shell Python, c'est bien pour tester, mais vos utilisateurs ne le feront jamais. Pour rendre votre application interactive, vous devez créer une interface capable de créer, lire, modifier et supprimer des informations. C'est ce qu'on appelle le CRUD.
Ajouter un enregistrement
On commence par le bouton d'ajout. C'est la porte d'entrée. Nous allons modifier notre liste principale pour y intégrer un lien vers le formulaire de création.
Le Template de liste
Ouvrez votre fichier membres/templates/index.html et ajoutez un lien d'action en bas de page.
<!DOCTYPE html>
<html>
<body>
<h1>Mes membres</h1>
<table border="1">
<tr><th>ID</th><th>Prénom</th><th>Nom</th><th>Email</th></tr>
{% for x in mesmembres %}
<tr>
<td>{{ x.id }}</td>
<td>{{ x.prenom }}</td>
<td>{{ x.nom }}</td>
<td>{{ x.mail }}</td>
</tr>
{% endfor %}
</table>
<p><a href="ajout/">Ajouter un membre</a></p>
</body>
</html>
Le formulaire de création
Créez maintenant ajout.html. Ce fichier contiendra les champs nécessaires pour capturer les informations du nouveau membre.
<h1>Ajouter un membre</h1>
<form action="ajouterrecord/" method="post">
{% csrf_token %}
Prénom :<br><input name="prenom"><br>
Nom :<br><input name="nom"><br>
Email :<br><input name="mail"><br><br>
<input type="submit" value="Enregistrer">
</form>
Sécurité : La balise {% csrf_token %} est obligatoire. Elle protège votre site contre les injections malveillantes lors des envois en méthode POST.
Logique et Routage
Côté views.py, nous avons besoin de deux fonctions : une pour afficher le formulaire et une pour traiter les données reçues.
from django.http import HttpResponse, HttpResponseRedirect from django.urls import reverse from .models import Membres # Affiche le formulaire def ajout(request): return render(request, 'ajout.html') # Traite l'enregistrement def ajouterrecord(request): x = request.POST['prenom'] y = request.POST['nom'] z = request.POST['mail'] membre = Membres(prenom=x, nom=y, mail=z) membre.save() return HttpResponseRedirect(reverse('index'))
Supprimer un enregistrement
Pour la suppression, pas besoin de nouveau template. On va simplement ajouter une colonne "Action" dans notre tableau principal avec un lien pointant vers l'ID du membre.
# Dans index.html, ajoutez cette cellule : <td><a href="delete/{{ x.id }}">Supprimer</a></td> # Dans views.py : def delete(request, id): membre = Membres.objects.get(id=id) membre.delete() return HttpResponseRedirect(reverse('index'))
Mettre à jour les données
La mise à jour est un mélange des deux étapes précédentes : on récupère l'objet existant pour pré-remplir un formulaire, puis on enregistre les modifications.
def update(request, id):
monmembre = Membres.objects.get(id=id)
return render(request, 'update.html', {'monmembre': monmembre})
def editer(request, id):
membre = Membres.objects.get(id=id)
membre.prenom = request.POST['prenom']
membre.nom = request.POST['nom']
membre.mail = request.POST['mail']
membre.save()
return HttpResponseRedirect(reverse('index'))
Par carabde | Mis à jour le 09/05/2026