Retour au blog

Création de modèles Django : un tutoriel

Création de modèles Django : un tutoriel

Django est un framework web bien connu pour le développement rapide de sites et d'applications web sécurisés et faciles à maintenir. Construit avec Python, Django simplifie le développement web, permettant de consacrer plus de temps et d'attention à l'écriture d'applications sans réinventer la roue à chaque fois. Django est un projet gratuit et open-source doté d'une documentation officielle solide, d'un excellent soutien de la communauté et de nombreuses options d'assistance gratuites et payantes.

Dans ce guide, nous allons nous plonger dans la création de modèles Django. Dans Django, un modèle est la source d'informations clé concernant vos données. Les modèles décrivent les champs et le comportement des données à stocker. Django utilise le modèle pour générer les tables de la base de données à l'aide de l'ORM (Object Relational Mapping), également appelés modèles.

Prérequis

Nous travaillons sur un système d'exploitation basé sur Unix, de préférence un serveur cloud Ubuntu 20.04 comme système sur lequel nous avons testé. Si vous souhaitez configurer Django sur un environnement similaire, veuillez vous référer à notre tutoriel, « Comment installer Django et configurer un environnement de développement sur Ubuntu 20.04.”

Étape 1. Environnement de développement Python

Django est construit sur Python. Nous avons donc besoin d'un environnement de développement Python robuste avec tous les outils nécessaires pour travailler avec des applications Python. Nous en avons déjà discuté dans un guide dédié. Ici, nous ferons une courte démonstration.

Tout d'abord, lancez un terminal et exécutez les commandes suivantes :

Ensuite, installez pip – le gestionnaire de paquets Python :

Ensuite, installez des paquets de développement supplémentaires :

Django Models 1

Pour établir un environnement virtuel, nous avons également besoin du module Python venv :

Étape 2. Installation du serveur MySQL

MySQL est un système de gestion de base de données relationnelle populaire. Il est open-source, stable et riche en fonctionnalités. Nous utiliserons MySQL comme serveur de base de données pour notre application Django. Installez MySQL à l'aide d'APT :

Ensuite, vérifiez l'installation :

Django Models 2

Il s'agit d'une configuration minimale de MySQL avec les options par défaut. Consultez le guide plus détaillé sur l'installation et la configuration de MySQL.

Étape 3. Configuration de l'application Django

Nous sommes maintenant prêts à créer notre application Django. Si vous êtes intéressé par une démonstration plus approfondie de Django, veuillez vous référer à notre tutoriel, « Installer le framework web Django sur Ubuntu 20.04.”

Ensuite, créez un répertoire dédié pour l'application. Le nom du répertoire doit refléter le nom du projet :

Dans le répertoire du projet, créez un environnement virtuel Python à l'aide du module venv :

Activez l'environnement virtuel :

Django Models 3

Installez Django à l'aide de pip:

Ensuite, créez un nouveau projet Django à l'aide de la commande django-admin :

django-admin

Étape 4. Configuration de l'application Django

L'application Django contient toutes les configurations par défaut. Pour notre objectif, nous devons effectuer quelques ajustements.

Commencez par éditer le fichier de configuration settings.py:

Ensuite, modifiez le fuseau horaire :

TIME_ZONE

Ajoutez les machines autorisées à accéder au serveur de l'application Django :

ALLOWED_HOSTS

Après cela, appliquez les modifications :

Django Models 4

Enfin, créez un superutilisateur pour notre application web Django :

python manage.py

Étape 5. Connexion de l'application Django à MySQL

Pour se connecter à MySQL, nous avons besoin d'une bibliothèque de connecteurs Python supplémentaire compatible avec Django. Nous utiliserons mysqlclient.

Tout d'abord, assurez-vous que les paquets nécessaires sont installés :

python3-dev

Ensuite, installez mysqlclient:

  • Création d'une base de données dédiée

Pour notre application, nous devons créer une base de données dédiée et un utilisateur de base de données. Lancez le shell MySQL en tant que root:

sudo mysql -u rootCréez une base de données dédiée pour notre application Django :

Ensuite, créez un utilisateur de base de données dédié pour l'application Django :

Enfin, accordez à l'utilisateur dédié toutes les autorisations sur la base de données dédiée :

GRANT ALL ON
  • Modification de la configuration de Django pour utiliser MySQL

Maintenant, nous devons ajuster certaines configurations de Django afin qu'il puisse utiliser MySQL comme serveur de base de données. Ouvrez settings.py dans un éditeur de texte :

Faites défiler vers le bas jusqu'à la section DATABASES et collez le code suivant :

DATABASES

Ensuite, modifiez le fichier de configuration MySQL afin qu'il contienne les identifiants de base de données nécessaires :

Ajoutez le bloc suivant à la fin du fichier :

Django Models 5

Redémarrez MySQL pour que les modifications prennent effet :

Étape 6. Création d'un modèle Django

Nous sommes maintenant prêts à créer un nouveau modèle au sein de notre projet Django. Activez l'environnement virtuel :

À cet emplacement, demandez à Django de créer une nouvelle application :

Après la création, l'arborescence des fichiers devrait ressembler à ceci. Ici, le fichier models.py contiendra les codes de notre modèle Django personnalisé :

Django Models 6

Vérifiez le contenu actuel du fichier :

cat models.py

À titre de démonstration, nous allons créer un modèle pour les articles de blog nommé Post. Il contiendra les champs suivants :

  • title : Titre de l'article de blog.
  • slug : Stocke et génère des URL valides pour les pages web.
  • content : Le texte de l'article de blog.
  • created_on : Date de création de l'article.
  • author : L'utilisateur qui a créé l'article.

Ouvrez le fichier models.py dans un éditeur de texte :

Importons quelques API nécessaires pour notre modèle. Par défaut, il importe l'API des modèles. Nous aurons également besoin de l'API slugify pour générer des slugs, de User pour l'authentification, et de reverse pour une création d'URL meilleure et plus flexible :

Ensuite, ajoutez la méthode de classe appelée Post. Elle contiendra les champs de base de données nécessaires comme title, slug, content, created_on, et author:

Nous avons besoin de la fonctionnalité de génération d'URL et de sauvegarde de l'article. C'est important car cela génère des liens uniques correspondant à des articles uniques :

La section suivante indiquera au modèle comment trier l'article et l'afficher sur la page web. Nous allons encoder la logique à l'aide d'une classe interne, Meta. Elle contiendra une logique de modèle supplémentaire qui ne concerne pas la définition des champs de la base de données :

Enfin, nous aurons la fonctionnalité du modèle Comment dans ce fichier. Cela nécessite d'ajouter une autre classe Comment en utilisant models.Model comme signature. Elle contiendra les champs de base de données suivants :

  • name : Nom de l'auteur du commentaire.
  • email : Adresse e-mail de l'auteur du commentaire.
  • text : Contenu du commentaire lui-même.
  • post : L'article sur lequel le commentaire a été publié.
  • created_on : Date et heure de création du commentaire.

Le code ressemblera à quelque chose comme ceci :

À ce stade, notre fichier models.py ressemblera à ceci :

models.py

Enfin, enregistrez le fichier et fermez l'éditeur.

Étape 7. Mise à jour des paramètres Django

Le modèle est créé. Cependant, nous devons ajuster certains fichiers de configuration pour mettre le modèle en action. Dans settings.py, nous devons ajouter notre modèle sous INSTALLED_APPS.

Ouvrez settings.py dans un éditeur de texte :

Enregistrez le nouveau module sous la section INSTALLED_APPS:

INSTALLED_APPS

Enregistrez le fichier et fermez l'éditeur.

Étape 8. Migration des modifications

Maintenant que nous avons ajouté tous les modèles souhaités, l'étape suivante consiste à appliquer ces modifications. Django appliquera ces schémas à notre base de données MySQL.

La commande suivante générera tous les fichiers de migration nécessaires. La sortie affichera les emplacements de tous ces fichiers dans le répertoire du projet :

makemigrations

La commande suivante listera toutes les migrations existantes :

Django Models 6

Notez que toutes les migrations sont marquées à l'exception de 0001_initial qui a été créée dans le cadre des modèles Post et Comment.

La commande suivante montrera quelle requête SQL Django exécutera pour effectuer les migrations :

sample_app

Tout ce qu'il nous reste à faire maintenant est d'appliquer les migrations. Ces migrations écriront les modifications dans la base de données :

migrate

Étape 9. Vérification des modifications

Pour vérifier les modifications, jetons un coup d'œil à notre base de données MySQL. Démarrez le shell MySQL en tant qu'utilisateur Django :

Ensuite, remplacez la base de données active actuelle par la base de données de l'application Django :

Affichez la liste de toutes les tables de la base de données :

Enfin, pour voir le contenu de l'une des tables, utilisez la DESCRIBE requête :

Django Models 7

Limites de Django avec MySQL

Lorsque vous utilisez MySQL comme serveur de base de données pour votre application Django, il y a quelques points à garder à l'esprit :

  • Il y a peu de prise en charge des transactions pour les processus de modification de schéma. Cela signifie que si une migration échoue, il est nécessaire d'annuler manuellement toutes les modifications avant de tenter une autre migration. Il n'y a aucun moyen de revenir à un point antérieur où la migration ayant échoué n'avait pas eu lieu.
  • Pour la plupart des processus de modification de schéma, MySQL réécrit complètement les tables. Dans certaines situations, cela peut prendre beaucoup de temps. Au pire, la complexité temporelle sera proportionnelle au nombre de lignes à ajouter ou de colonnes à supprimer. Selon la documentation officielle de Django, cela pourrait prendre une minute par million de lignes.
  • MySQL impose une limite de caractères pour la longueur des noms de colonnes, de tables et d'index. Il existe également une limite sur la taille totale de toutes les colonnes et couvertures d'index. Django peut dépasser cette limite. Certains backends autres que MySQL peuvent gérer la limite plus élevée de Django.

C'est pourquoi il est fortement recommandé de peser vos options et de choisir celle qui convient le mieux.

Réflexions finales

Ce guide démontre avec succès comment ajouter des modules à une application Django existante. Nous avons utilisé MySQL comme backend pour l'application. Il présente également certains concepts clés de Django tels que les modèles, le fonctionnement des migrations et la manière dont Django traduit les modèles en tables de base de données MySQL.

Bon développement !

author

Hark Labs

Auteur · CloudSigma

Preslav Dobrev est un designer créatif chez CloudSigma, axé sur une identité commerciale cohérente à travers des canaux marketing traditionnels et innovants. Il excelle à fusionner la vision artistique avec le marketing stratégique pour créer des récits de marque percutants.

Commentaires

Aucun commentaire pour l'instant. Soyez le premier.