OUJOOD.COM
Insérer des données via le shell Django
Pour l'instant, la table membres_membres est vide. Avant de construire une interface utilisateur, le plus rapide pour la remplir est d'utiliser le shell interactif Django — un interpréteur Python qui charge automatiquement tout votre projet.
Depuis le dossier contenant manage.py, lancez :
python manage.py shell
Un prompt >>> s'affiche. Importez d'abord le modèle, puis vérifiez que la table est bien vide :
# Importer le modèle Membres >>> from membres.models import Membres # Vérifier le contenu de la table — renvoie un QuerySet vide >>> Membres.objects.all() <QuerySet []>
Un QuerySet est une collection de données issue d'une base de données. Vide pour l'instant — c'est attendu. Pour en savoir plus, consultez le chapitre sur les QuerySets Django.
Ajouter un premier enregistrement
Pour créer un membre, instanciez le modèle avec les valeurs des champs, puis appelez .save() pour écrire en base :
>>> membre = Membres(prenom='Emil', nom='Refsnes', mail='emil@monemail.com')
>>> membre.save()
# Vérifier que l'enregistrement est bien présent
>>> Membres.objects.all().values()
<QuerySet [{'id': 1, 'prenom': 'Emil', 'nom': 'Refsnes', 'mail': 'emil@monemail.com'}]>
.save() déclenche un INSERT INTO SQL. Sans cet appel, l'objet existe en mémoire mais n'est pas enregistré en base. L'id est attribué automatiquement par Django.
Ajouter plusieurs enregistrements
Pour insérer plusieurs membres en une fois, créez les objets, mettez-les dans une liste, puis bouclez sur .save() :
>>> membre1 = Membres(prenom='Martin', nom='Dubois', mail='martin@monemail.com')
>>> membre2 = Membres(prenom='Bernard', nom='Durand', mail='bernard@monemail.com')
>>> membre3 = Membres(prenom='Robert', nom='Morin', mail='robert@monemail.com')
>>> membre4 = Membres(prenom='Salah', nom='Bailly', mail='salah@monemail.com')
>>> liste = [membre1, membre2, membre3, membre4]
>>> for x in liste:
... x.save()
# Vérifier les 5 membres
>>> Membres.objects.all().values()
<QuerySet [
{'id': 1, 'prenom': 'Emil', 'nom': 'Refsnes', 'mail': 'emil@monemail.com'},
{'id': 2, 'prenom': 'Martin', 'nom': 'Dubois', 'mail': 'martin@monemail.com'},
{'id': 3, 'prenom': 'Bernard', 'nom': 'Durand', 'mail': 'bernard@monemail.com'},
{'id': 4, 'prenom': 'Robert', 'nom': 'Morin', 'mail': 'robert@monemail.com'},
{'id': 5, 'prenom': 'Salah', 'nom': 'Bailly', 'mail': 'salah@monemail.com'}
]>
Quittez le shell avec quit() quand vous avez terminé.
Afficher les données dans une vue
Le shell est pratique pour tester, mais les données doivent s'afficher dans le navigateur. Ouvrez membres/views.py et modifiez la vue index pour récupérer tous les membres et les passer à un template :
from django.http import HttpResponse
from django.template import loader
from .models import Membres
def index(request):
# Récupérer tous les membres de la base de données
mesmembers = Membres.objects.all().values()
template = loader.get_template('index.html')
# Le contexte transmet les données au template
context = {
'mesmembers': mesmembers,
}
return HttpResponse(template.render(context, request))
Le dictionnaire context est le canal de transmission entre la vue et le template. Les clés de ce dictionnaire deviennent des variables accessibles dans le HTML — ici, mesmembers sera disponible dans le template.
Créer le template index.html
Dans membres/templates/, créez le fichier index.html avec ce contenu :
<!DOCTYPE html>
<html>
<head>
<title>Liste des membres</title>
</head>
<body>
<h1>Mes membres</h1>
<table border="1" style="border-collapse: collapse;">
<tr>
<th>ID</th>
<th>Prénom</th>
<th>Nom</th>
<th>Email</th>
</tr>
{% for x in mesmembers %}
<tr>
<td>{{ x.id }}</td>
<td>{{ x.prenom }}</td>
<td>{{ x.nom }}</td>
<td>{{ x.mail }}</td>
</tr>
{% endfor %}
</table>
</body>
</html>
Deux syntaxes Django apparaissent ici pour la première fois :
{% for x in mesmembers %} ... {% endfor %} — une balise de template. Le code entre {% et %} est de la logique exécutée par Django côté serveur : boucles, conditions, inclusions. Le navigateur ne voit jamais ces balises.
{{ x.prenom }} — une variable de template. Django remplace {{ }} par la valeur correspondante avant d'envoyer le HTML. Ici, x est l'objet membre courant de la boucle.
Résultat dans le navigateur
Démarrez le serveur et ouvrez http://127.0.0.1:8000/membres/ :
python manage.py runserver
Le tableau HTML s'affiche avec les 5 membres. La vue interroge la base, transmet les données au template via le contexte, le template génère le HTML final. Le cycle MVT complet est bouclé.
Par carabde | Mis à jour le 05 mai 2025