Table of Contents
Lorsque j'ai commencé à apprendre Django, je me souviens avoir été submergé par le nombre impressionnant de concepts (modèles, vues, templates) : c'était comme si j'essayais de boire à la lance à incendie. Mais dès que j'ai compris comment fonctionnent les modèles, le reste du framework a commencé à se mettre en place. Les modèles sont la base de tout projet Django, et dans ce tutoriel, je veux vous guider dans leur création, en commençant par la base. Nous aborderons tout, de la configuration de votre environnement à la création d'un modèle Product
fonctionnel. À la fin, vous aurez une solide compréhension du fonctionnement des modèles et de la manière de les utiliser efficacement.
Ne nous lançons pas tout de suite dans le vif du sujet : nous procéderons étape par étape, afin qu'aucun détail ne soit laissé de côté.
Configurer Django : à partir de zéro
La première étape de tout projet Django consiste à s'assurer que votre environnement est correctement configuré. Avant même de penser aux modèles, nous devons préparer notre espace de travail. Sur Ubuntu, cela commence par s'assurer que Python est installé, ainsi que son gestionnaire de paquets, pip. Vous pouvez installer les deux avec une simple commande :
sudo apt update && sudo apt install python3 python3-pip
Une fois cela fait, confirmez l'installation en exécutant python3 --version et pip3 --version , qui devraient afficher les versions installées de Python et pip. Ces outils sont essentiels pour tout ce que nous allons faire, il vaut donc la peine de vérifier qu'ils fonctionnent.
Chaque fois que je démarre un nouveau projet Django, je commence toujours par configurer un environnement virtuel. Il s'agit d'un environnement dédié aux dépendances de votre projet, qui les isole de votre installation Python à l'échelle du système. Considérez-le comme une bulle de protection pour votre projet. Pour en créer un, vous aurez besoin du module venv
, qui est installé avec Python par défaut. Accédez au dossier de votre projet et créez un environnement virtuel :
python3 -m venv env
Activez-le en exécutant :
source env/bin/activate
Vous remarquerez que l'invite de votre terminal change pour inclure (env)
, vous indiquant que l'environnement virtuel est actif.
Une fois notre environnement configuré, nous sommes prêts à installer Django lui-même. À l'aide de pip, installez-le avec :
pip install django
Vous pouvez vérifier la version pour vous assurer qu'elle est correctement installée :
python -m django --version
Cela garantit que tout est à jour et prêt à fonctionner. Vient maintenant la partie passionnante : démarrer un nouveau projet Django. Pour ce tutoriel, nous créons un projet appelé inventory_system
. Exécutez :
django-admin startproject inventory_system .
Le point à la fin est essentiel : il indique à Django de créer le projet dans le répertoire courant plutôt que dans un dossier imbriqué. Cela permet de garder les choses ordonnées et gérables.
Si vous jetez un œil, Django aura créé plusieurs fichiers et dossiers pour vous. Il y a le fichier manage.py
, que vous utiliserez pour interagir avec le projet, et un sous-dossier nommé d'après votre projet qui contient des fichiers de configuration comme settings.py
et urls.py
. À ce stade, vous pouvez déjà exécuter le serveur de développement :
python manage.py runserver
Ouvrez un navigateur, allez sur http://127.0.0.1:8000 et vous verrez la page d'accueil de Django. C'est toujours un moment de satisfaction car cela signifie que tout fonctionne comme prévu.
Créer une application Django pour les produits
Une application Django est un élément modulaire de votre projet, représentant généralement une fonctionnalité spécifique. Pour ce tutoriel, nous allons créer une application pour gérer les produits et les avis. Pour générer la structure de l'application, exécutez :
python manage.py startapp products
Une fois l'application créée, enregistrez-la dans votre projet. Ouvrez settings.py
et ajoutez 'products' ,
à la liste INSTALLED_APPS
:
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'products', # New app ]
Cette étape indique à Django d'inclure l'application dans le projet. Une fois notre application en place, nous sommes prêts à commencer à créer des modèles.
Présentation du modèle de produit
Les modèles dans Django sont des classes Python quiDéfinissez la structure de vos tables de base de données. Chaque attribut du modèle devient une colonne et Django gère toute la lourde tâche de conversion de ces classes Python en instructions SQL réelles. Pour notre exemple, nous commencerons avec un modèle Product
. Ce modèle comportera des champs pour les attributs courants tels que le nom du produit, la description, le prix et le stock. De plus, nous inclurons un champ slug
pour créer des URL optimisées pour le référencement, un BooleanField
pour indiquer si le produit est actif et des horodatages pour la création et la mise à jour du produit.
Voici le code du modèle de produit :
from django.db import models from django.utils.text import slugify from django.urls import reverse class Product(models.Model): name = models.CharField(max_length=200) description = models.TextField() price = models.DecimalField(max_digits=10, decimal_places=2) stock = models.IntegerField() is_active = models.BooleanField(default=True) slug = models.SlugField(unique=True, blank=True) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) release_date = models.DateField(null=True, blank=True) image = models.ImageField(upload_to='product_images/', null=True, blank=True) def __str__(self): return self.name def save(self, *args, **kwargs): if not self.slug: self.slug = slugify(self.name) super().save(*args, **kwargs) def get_absolute_url(self): return reverse('product_detail', kwargs={'slug': self.slug})
Décomposer
Le modèle Product
utilise plusieurs types de champs pour représenter différents attributs d'un produit. Par exemple, le champ name
est un CharField
d'une longueur maximale de 200 caractères, tandis que le champ description
est un TextField
pour un texte plus long. Le champ price
est un DecimalField
, qui nous permet de stocker des valeurs monétaires précises en spécifiant le nombre total de chiffres ( max_digits=10
) et le nombre de décimales ( decimal_places=2
). De même, stock
est un IntegerField
pour représenter les inventaires, et is_active
est un BooleanField
pour indiquer si le produit est actuellement disponible.
Le champ slug
est particulièrement intéressant. Il s'agit d'un SlugField
, qui est utilisé pour stocker du texte convivial pour les URL, souvent dérivé du nom du produit. Pour garantir que chaque produit possède un slug unique, nous définissons unique=True
. En remplaçant la méthode save
, nous utilisons la fonction slugify
de Django pour générer automatiquement un slug lorsque le produit est enregistré pour la première fois.
Pour le suivi des horodatages, nous avons ajouté les champs created_at
et updated_at
. Le champ created_at
utilise auto_now_add=True
pour définir l'horodatage lors de la première création de l'enregistrement, tandis que updated_at
utilise auto_now=True
pour mettre à jour l'horodatage chaque fois que l'enregistrement est modifié. Il existe également un champ image
pour stocker les images des produits. Cela nécessite la bibliothèque Pillow, que vous pouvez installer avec pip install pillow .
Deux méthodes supplémentaires améliorent la convivialité de ce modèle. La méthode __str__
définit la manière dont le produit apparaîtra dans l'administrateur Django ou lors de l'impression. Dans ce cas, elle renvoie simplement le nom du produit. La méthode get_absolute_url
génère une URL pour le produit, en utilisant son slug. Cela permet de centraliser la logique de l'URL et d'éviter de coder en dur les chemins ailleurs dans le code.
Réaliser des migrations
Pour appliquer ce modèle à la base de données, nous devons créer et exécuter des migrations. Voici comment Django traduit notre code Python en modifications de schéma de base de données. Tout d'abord, créez les migrations avec :
python manage.py makemigrations
Ensuite, appliquez-les à la base de données avec :
python manage.py migrate
Si tout fonctionne correctement, Django aura créé une table products_product
dans votre base de données. Votre modèle Product
est désormais opérationnel et prêt à être utilisé !
Conclusion de la première partie
Jusqu'à présent, nous'Nous avons configuré Django, créé un projet et une application, et construit un modèle Product
fonctionnel. Dans la partie suivante, nous allons créer un modèle Review
, établir des relations entre les modèles et nous plonger dans l'interrogation de la base de données avec l'ORM de Django. Si vous avez suivi, prenez le temps d'explorer votre nouveau modèle : exécutez le serveur de développement, expérimentez avec l'administrateur Django et voyez-le en action. Restez à l'écoute pour la partie 2 !