oujood.com

Django Ajouter des membres

Notre table Membres est vide, nous devons y ajouter des membres.Django nous permet d'interagir avec ses modèles de base de données.
Donc on peut ajouter, supprimer, modifier et interroger des objets, à l'aide d'une base de données.

chercher |

Ajouter des enregistrements

La table membres étant vide, nous devons y ajouter des membres.

Dans les prochains chapitres, vous apprendrez à créer une interface utilisateur qui prendra en charge les opérations CRUD (Create, Read, Update, Delete), mais pour l'instant, écrivons du code Python directement dans l'interpréteur Python (Python shell) et ajoutons quelques membres dans notre base de données, sans interface utilisateur.

Pour ouvrir un shell Python, tapez cette commande dans cmd:
python manage.py shell
La sortie est :
(env_site) C:\Users\Admin\env_site\monprojet>python manage.py shell
Python 3.10.7 (tags/v3.10.7:6cc6b13, Sep  5 2022, 14:08:36) [MSC v.1933 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>>
En bas, après les trois >>>, écrivez ce qui suit :
 from membres.models import Membres
Appuyez sur [enter] et écrivez ceci pour regarder la table vide des membres :
>>> Membres.objects.all()
Cela devrait vous donner un objet QuerySet vide, comme ceci :
<QuerySet []>
Un QuerySet est une collection de données provenant d'une base de données.

Pour en savoir plus sur les ensembles de requêtes, consultez le chapitre sur les ensembles de requêtes de Django.

Maintenant ajoutez un enregistrement à la table, en exécutant ces deux lignes :
>>> membre = Membres(prenom='Emil', nom='Refsnes',mail='emil@monemail.com')
membre.save()
La sortie est :
>>> membre = Membres(prenom='Emil', nom='Refsnes',mail='emil@monemail.com')
  File "<console>", line 1
>>> membre.save()
>>>
Exécutez la commande suivante pour voir si la table Membres contient un membre :
>>> Membres.objects.all().values()
La sortie est :
<QuerySet [{'id': 1, 'prenom': 'Emil', 'nom': 'Refsnes', 'mail': 'emil@monemail.com'}]>
>>>

Ajouter plusieurs enregistrements

Pour ajouter plusieurs enregistrements, il suffit de dresser une liste d'objets de membres et d'exécuter .save() sur chaque entrée :
>>> 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='Bailly@monemail.com')
membres_list = [membre1, membre2, membre3, membre4]
for x in membres_list:
   x.save()
La table des membres compte maintenant 5 membres :
Exécutez la commande suivante pour voir ce que la table Membres contient : >>> Membres.objects.all().values() La sortie est :
<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': 'Bailly@monemail.com'}]> >>>

Visualisation dans le navigateur Web

Si le résultat doit être affiché dans une page web, et non dans un environnement shell Python.

Nous pouvons créer une vue pour cette tâche particulière afin de voir le résultat dans une page web.

Dans l'application membre, ouvrez le fichier views.py, si vous avez suivi les chapitres précédents de ce tutoriel, il devrait être similaire à celui-ci :
Fichier membres/views.py :

  Copier le code

from django.http import HttpResponse
from django.template import loader

def index(request):
  template = loader.get_template('monpremier.html')
  return HttpResponse(template.render())
Changez le contenu du fichier views.py pour qu'il soit comme celui-ci :
Fichier membres/views.py modifié:

  Copier le code

from django.http import HttpResponse
from django.template import loader
from .models import Membres

def index(request):
  mesmembres = Membres.objects.all().values()
  resultat = ""
  for x in mesmembres:
    resultat += x["prenom"]
  return HttpResponse(resultat)
Comme vous pouvez le constater à la ligne 3, le modèle Membres est importé, et le View Index fait ce qui suit :

Crée un objet mesmembres avec toutes les valeurs du modèle Membres.

Boucle sur tous les éléments de l'objet mesmembres pour construire une liste de toutes les valeurs de prénom. Elle renvoie la liste de ces valeurs au navigateur.

Visualisez le résultat dans votre navigateur. Si vous êtes toujours dans le shell Python, écrivez cette commande pour quitter le shell :

 quit()
Naviguez vers le dossier /monprojet/ et tapez ceci pour démarrer le serveur :
python manage.py runserver
Dans la fenêtre du navigateur, tapez 127.0.0.1:8000/membres/ dans la barre d'adresse.

Ajouter un template (modèle)

Jusqu'ici, nous avons réussi à afficher le contenu d'une table de base de données dans une page Web.

Pour ajouter du HTML autour des valeurs, nous allons créer un modèle pour l'application.

Tous les templates doivent être situés dans le dossier templates de votre application. Si vous n'avez pas encore créé de dossier templates, faites-le maintenant.

Dans le dossier templates, créez un fichier nommé index.html, avec le contenu suivant :
Fichier membres/templates/index.html :

  Copier le code

<!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>
Vous avez remarqué les parties {% %} et {{ }} ? Il s'agit de balises spéciales qu'on nomme balises de modèle(templates tags).

Les balises de modèle vous permettent d'exécuter une logique et de rendre des variables dans vos modèles. Vous en saurez plus sur les balises de modèle plus tard.

Modifier le fichier views.py

Modifiez la vue de l'index pour inclure le modèle :
Fichier membres/views.py modifié:

  Copier le code

from django.http import HttpResponse
from django.template import loader
from .models import Membres

def index(request):
  mesmembers = Membres.objects.all().values()
  template = loader.get_template('index.html')
  context = {
    'mesmembers': mesmembers,
  }
  return HttpResponse(template.render(context, request))
La vue index effectue les opérations suivantes :

Crée un objet mesmembres avec toutes les valeurs du modèle Membres.
Charge le modèle index.html.
Crée un objet contenant l'objet mesmembres.
Envoi de l'objet au template.
Édite le HTML qui est rendu par le template.
Pour voir le résultat dans la fenêtre du navigateur, tapez http://127.0.0.1:8000/membres/ ou http://localhost:8000/membres/ dans la barre d'adresse.

Voir aussi nos tutoriel :

XSLT transformation

XSLT transformation

Objet boolean js

Objet boolean js : L'objet boolean de javascript: définition et utilisation

la fonction include

Les includes