0% ont trouvé ce document utile (0 vote)
3 vues5 pages

Chap4 - Python Django

Le chapitre 4 explique comment Django interagit avec les bases de données en utilisant des modèles Python et l'ORM, permettant de manipuler les données sans écrire de SQL. Il couvre la configuration de la base de données, la création de modèles, l'application de migrations et l'utilisation du shell Django pour interagir avec les données. Des exercices pratiques et un QCM sont également inclus pour tester les connaissances sur ces concepts.

Transféré par

despotarica22
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
3 vues5 pages

Chap4 - Python Django

Le chapitre 4 explique comment Django interagit avec les bases de données en utilisant des modèles Python et l'ORM, permettant de manipuler les données sans écrire de SQL. Il couvre la configuration de la base de données, la création de modèles, l'application de migrations et l'utilisation du shell Django pour interagir avec les données. Des exercices pratiques et un QCM sont également inclus pour tester les connaissances sur ces concepts.

Transféré par

despotarica22
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

DR ZOTCHI GIOVANI – ZOGIOVANI@[Link] – 0197991288 – [Link].

fr

Chapitre 4 : Modèles et Bases de Données

Objectif du chapitre : Comprendre comment Django interagit avec une base de données.
Vous apprendrez à définir la structure de vos données avec les modèles Python, à appliquer
ces changements à la base de données via les migrations, et à manipuler les données sans
écrire une seule ligne de SQL grâce à l'ORM de Django.

4.1. Configuration de la base de données

Par défaut, Django est configuré pour utiliser SQLite, une base de données légère qui stocke
tout dans un seul fichier. C'est parfait pour le développement et les petits projets car cela ne
nécessite aucune installation supplémentaire.

La configuration se trouve dans le fichier [Link] de votre projet (ex:


mon_projet/[Link]) :

Python
# mon_projet/[Link]

DATABASES = {
'default': {
'ENGINE': '[Link].sqlite3',
'NAME': BASE_DIR / 'db.sqlite3', # Le fichier sera créé à la racine
du projet
}
}

Pour l'instant, nous n'avons pas besoin de toucher à cette configuration. Lorsque vous lancerez
des commandes qui interagissent avec la base de données pour la première fois, le fichier
db.sqlite3 sera créé automatiquement.

4.2. Les modèles Django (Models)

Un modèle est la "source unique de vérité" concernant vos données. C'est une classe Python
qui hérite de [Link]. Chaque attribut de la classe représente un champ
dans la table de la base de données.

Imaginons que nous voulions créer un blog simple. Nous aurons besoin d'un modèle pour les
articles (Post). Ouvrez le fichier pages/[Link] (ou le nom de votre application) et
écrivez :

Python
# pages/[Link]
from [Link] import models

class Post([Link]):
# Un champ pour le titre de l'article
# CharField est utilisé pour les chaînes de caractères de petite à
moyenne taille
title = [Link](max_length=200)

# TextField est utilisé pour les textes longs, sans limite de taille
content = [Link]()

Page 1|5
DR ZOTCHI GIOVANI – ZOGIOVANI@[Link] – 0197991288 – [Link]

# DateTimeField stocke une date et une heure


# auto_now_add=True indique à Django de définir la date lors de la
création de l'objet
created_at = [Link](auto_now_add=True)

def __str__(self):
# Cette méthode spéciale définit comment l'objet sera représenté en
texte
# (très utile dans l'interface d'administration)
return [Link]

Django propose de nombreux types de champs (IntegerField pour les nombres,


BooleanField pour les Vrai/Faux, ForeignKey pour les relations, etc.) qui correspondent aux
types de données des bases de données SQL.

4.3. L'ORM Django : Parler à la base de données en Python

L'ORM (Object-Relational Mapper) est l'une des fonctionnalités les plus puissantes de
Django. C'est une couche d'abstraction qui traduit votre code Python en requêtes SQL. Grâce
à l'ORM, vous pouvez créer, lire, mettre à jour et supprimer des données (CRUD operations)
en utilisant des objets Python, sans jamais écrire de SQL.

 Au lieu d'écrire : INSERT INTO pages_post (title, content) VALUES ('Mon


titre', 'Mon contenu');
 Vous écrivez en Python : [Link](title='Mon titre',
content='Mon contenu')

C'est plus simple, plus lisible, moins sujet aux erreurs (comme les injections SQL) et cela
rend votre code indépendant de la base de données que vous utilisez (passer de SQLite à
PostgreSQL devient très facile).

4.4. Les migrations : Appliquer les changements

Vous avez défini votre modèle en Python, mais comment la base de données sait-elle qu'elle
doit créer une table pages_post avec les champs title, content et created_at ? C'est le
rôle des migrations.

Le processus se fait en deux étapes :

1. makemigrations : Django compare vos modèles ([Link]) à l'état actuel de votre


base de données (enregistré dans les fichiers de migration précédents) et génère un
nouveau fichier de migration dans le dossier migrations/ de votre application. Ce
fichier est une recette en Python décrivant les changements à effectuer.

Bash

python [Link] makemigrations

2. migrate : Django prend tous les fichiers de migration qui n'ont pas encore été
appliqués et exécute les instructions qu'ils contiennent sur la base de données (il
traduit la recette Python en commandes SQL).
Page 2|5
DR ZOTCHI GIOVANI – ZOGIOVANI@[Link] – 0197991288 – [Link]

Bash

python [Link] migrate

Ce duo makemigrations -> migrate est une routine fondamentale que vous utiliserez
chaque fois que vous modifierez vos modèles.

4.5. Le Shell Django : Interagir avec vos données

Le shell Django est un terminal Python interactif qui précharge tout votre projet. C'est l'outil
parfait pour tester des requêtes, créer des objets et interagir avec votre base de données en
direct.

Pour le lancer, exécutez la commande :

Bash
python [Link] shell

Une fois dans le shell, vous pouvez utiliser l'ORM :

Python
# Importez votre modèle
>>> from [Link] import Post

# Créer un nouvel article de blog


>>> post1 = Post(title="Mon premier article", content="C'est le début d'une
grande aventure !")
>>> [Link]() # La méthode save() enregistre l'objet dans la base de
données

# Créer un autre article avec la méthode create() (qui fait .new() et


.save() en une étape)
>>> post2 = [Link](title="Django est génial", content="L'ORM
simplifie vraiment la vie.")

# Récupérer tous les articles de la base de données


>>> tous_les_posts = [Link]()
>>> print(tous_les_posts)
<QuerySet [<Post: Mon premier article>, <Post: Django est génial>]>

# Récupérer un article spécifique par son titre


>>> mon_post = [Link](title="Mon premier article")
>>> print(mon_post.content)
C'est le début d'une grande aventure !

📝 Exercices Pratiques

Exercice 1 : Créer un modèle "Tâche"

1. Dans une de vos applications (par exemple pages ou core), ouvrez le fichier
[Link].
2. Créez un modèle nommé Task pour représenter une tâche à faire. Il doit avoir les
champs suivants :

Page 3|5
DR ZOTCHI GIOVANI – ZOGIOVANI@[Link] – 0197991288 – [Link]

o description : Un champ texte pour décrire la tâche (CharField avec une


longueur maximale de 255).
o is_completed : Un champ booléen (BooleanField) pour savoir si la tâche est
terminée. La valeur par défaut doit être False.
3. N'oubliez pas d'ajouter la méthode __str__ pour qu'elle retourne la description de la
tâche.

Exercice 2 : Générer et appliquer les migrations

1. Après avoir créé le modèle Task, ouvrez votre terminal.


2. Lancez la commande pour que Django détecte vos changements et crée le fichier de
migration.
3. Lancez la commande pour appliquer cette migration à votre base de données
db.sqlite3.
4. (Bonus) Allez voir le dossier migrations de votre application pour observer le fichier
qui a été créé.

Exercice 3 : Manipuler les tâches dans le Shell

1. Lancez le shell interactif de Django.


2. Importez votre modèle Task.
3. Créez au moins deux nouvelles tâches : "Apprendre Django" et "Faire les courses".
4. Récupérez toutes les tâches de la base de données et affichez-les.
5. Récupérez la tâche "Faire les courses" et marquez-la comme terminée. N'oubliez pas
de sauvegarder votre changement.
6. Vérifiez que la tâche est bien marquée comme terminée en la récupérant à nouveau.

❓ QCM : Testez vos connaissances

1. Quel est le but principal de l'ORM de Django ? a) Optimiser le code Python pour qu'il
soit plus rapide. b) Traduire le code Python en requêtes SQL pour interagir avec la base de
données. c) Gérer le routage des URLs de l'application. d) Créer automatiquement des fichiers
HTML.

2. Vous venez de modifier un CharField dans votre [Link]. Quelle commande devez-
vous exécuter en premier ? a) python [Link] runserver b) python [Link]
migrate c) python [Link] shell d) python [Link] makemigrations

3. À quoi sert la méthode __str__(self) dans une classe de modèle ? a) À convertir le


modèle en une chaîne de caractères SQL. b) C'est obligatoire pour que le modèle soit valide.
c) À fournir une représentation textuelle lisible d'une instance de l'objet, notamment dans
l'admin. d) À lier le modèle à un template.

4. Quelle commande de l'ORM permet de récupérer TOUS les objets d'un modèle
Product ? a) [Link]() b) [Link]() c)
[Link]() d) [Link]()

Page 4|5
DR ZOTCHI GIOVANI – ZOGIOVANI@[Link] – 0197991288 – [Link]

5. Quel champ de modèle est le plus approprié pour stocker la biographie d'un
utilisateur, qui peut être très longue ? a) [Link](max_length=5000) b)
[Link]() c) [Link]() d) [Link]()

Page 5|5

Vous aimerez peut-être aussi