Django est un framework web gratuit et open-source écrit en Python. Publié pour la première fois en 2005, Django intègre la devise « développement rapide et conception propre et pragmatique ». Le framework, déployé sur un serveur web, peut rapidement produire un front-end web doté de fonctionnalités riches, de sécurité et d'évolutivité.
Toute application web s'appuie sur des bases de données pour son contenu. Django, étant un framework moderne, prend en charge un certain nombre de programmes de bases de données standard, par exemple, PostgreSQL, SQLite, MySQL, etc. Ce guide va montrer comment connecter une application Django à une base de données sur MySQL.
Prérequis
Pour suivre ce tutoriel, vous devez remplir certaines conditions préalables avant de passer à Django et à la connexion à la base de données :
- Un serveur web approprié. Dans ce guide, nous utiliserons un serveur Ubuntu.
- Un environnement de développement Python 3 correctement configuré.
- Une application de base de données. Voici un guide détaillé sur l'installation et l'utilisation de MySQL.
Installation et configuration de Python 3
Django est écrit en Python. L'exécution de toute application Python nécessite l'installation des binaires Python dans le système. Ubuntu est livré avec Python installé par défaut. Ici, nous utiliserons Python 3. Depuis le terminal, exécutez les commandes suivantes. Tout d'abord, mettez à jour le cache APT et mettez à niveau (si disponible) tous les paquets installés :
|
1 |
$ sudo apt update && sudo apt upgrade -y |
Python 3 est directement disponible depuis les serveurs de paquets officiels d'Ubuntu. Le paquet
python-is-python3 crée un lien symbolique binaire python vers
python3 pour plus de facilité d'utilisation :
|
1 |
$ sudo apt install python3 python-is-python3 |
Ensuite, vérifiez si l'installation a réussi :
|
1 2 |
$ python3 --version $ python --version |
Après cela, nous avons besoin de pip. C'est le gestionnaire de paquets standard de Python. Il est responsable de la gestion des bibliothèques Python supplémentaires qui ne font pas partie de la bibliothèque standard. Notez que nous installons pip3 (pour Python 3) :
|
1 |
$ sudo apt install python3-pip |
Enfin, nous avons besoin de quelques paquets supplémentaires pour un environnement de programmation robuste :
|
1 |
$ sudo apt install build-essential libssl-dev libffi-dev python3-dev |
Installation et configuration de MySQL
Cette section va brièvement présenter l'installation et la configuration de MySQL. Il est disponible dans les dépôts de paquets par défaut d'Ubuntu :
|
1 |
$ sudo apt install mysql-server |
Si l'installation a réussi, MySQL commencera à s'exécuter en arrière-plan. Vérifiez s'il fonctionne correctement :
|
1 |
$ systemctl status mysql |
Le serveur MySQL est opérationnel. Nous pouvons maintenant passer en toute sécurité au développement de notre application Django.
Travailler avec Django
-
Création de l'application Django d'exemple
La base de notre application web nécessite le squelette du projet Django. Il contient tous les outils et bibliothèques nécessaires pour créer une application web robuste. Tout d'abord, nous allons créer un répertoire dédié à notre application Django. Il est recommandé de donner au répertoire un nom significatif et cohérent avec l'application que nous allons créer. Dans cette démonstration, nous le nommerons myDemoApp:
|
1 |
$ mkdir -pv myDemoApp |
Nous avons besoin du module Python venv pour créer un environnement virtuel dans le répertoire. Installez le module en utilisant APT:
|
1 |
$ sudo apt install python3-venv |
Ensuite, accédez au répertoire et créez un environnement virtuel. Pour plus de clarté, nous avons nommé l'environnement demoapp_env:
|
1 |
$ python3 -m venv demoapp_env |
Ensuite, activez l'environnement virtuel en exécutant le script activate :
|
1 |
$ . demoapp_env/bin/activate |
Nous allons maintenant installer Django dans cet environnement virtuel dédié. Pip va télécharger et installer des composants supplémentaires :
|
1 |
$ pip install django |
Django est installé et prêt à être utilisé. Appelez la commande django-admin pour créer un nouveau projet Django. Après cela, donnez à l'application un nom approprié :
|
1 |
$ django-admin startproject demoapp |
Cela créera un projet de démonstration avec les fichiers et répertoires de projet nécessaires en place :
|
1 |
$ ls -l |
Le squelette du projet est prêt. Ensuite, nous devons le configurer correctement pour atteindre notre objectif.
-
Modification des paramètres du projet Django
Toutes les configurations du projet sont stockées dans le fichier settings.py. Il est situé dans le répertoire du projet Django. Nous allons commencer par définir un fuseau horaire approprié et lister les hôtes qui peuvent se connecter à l'application Django. Ouvrez le fichier de configuration dans un éditeur de texte :
|
1 |
$ nano ~/myDemoApp/demoapp/demoapp/settings.py |
Faites défiler le script vers le bas et trouvez l'entrée TIME_ZONE. Pour la démonstration, le fuseau horaire est défini sur America/New_York:
|
1 |
$ TIME_ZONE = 'America/New_York' |
Pour référence, la commande suivante affichera tous les fuseaux horaires pris en charge sous Linux :
|
1 |
$ timedatectl list-timezones |
Ensuite, faites défiler jusqu'à l'entrée ALLOWED_HOSTS. Elle contrôle quelle(s) machine(s) peu(ven)t accéder à l'application. Pour la démonstration, elle ne contient que localhost :
|
1 |
$ ALLOWED_HOSTS = ['localhost'] |
Ensuite, enregistrez le fichier et fermez l'éditeur. La commande suivante appliquera les modifications :
|
1 |
$ python manage.py migrate |
Maintenant, nous devons créer un compte administrateur pour l'application web. Ce compte sera utilisé pour accéder à l'interface d'administration de Django. Exécutez la commande suivante :
|
1 |
$ python manage.py createsuperuser |
Il vous sera demandé un nom d'utilisateur, une adresse e-mail et un mot de passe. L'application est maintenant prête à se connecter à la base de données.
Connexion MySQL
-
Installation des connecteurs MySQL et des bibliothèques de développement
Pour intégrer MySQL dans l'application Django, nous avons besoin de bibliothèques Python 3 supplémentaires qui fourniront les outils nécessaires. Nous utiliserons le connecteur de base de données mysqlclient. C'est un fork de MySQLdb.
Assurez-vous que nous avons python3-dev installé :
|
1 |
$ sudo apt install python3-dev |
Nous avons également besoin de certains en-têtes et bibliothèques Python et MySQL supplémentaires :
|
1 |
$ sudo apt install python3-dev libmysqlclient-dev default-libmysqlclient-dev |
Une fois l'installation terminée, utilisez pip pour installer le module Python mysqlclient. Il peut générer des messages d'erreur qui peuvent être ignorés :
|
1 |
$ pip install mysqlclient |
-
Configuration d'une base de données dédiée
L'étape suivante consiste à configurer une base de données dédiée et un utilisateur de base de données pour notre application Django. Lancez le shell MySQL en tant qu'utilisateur root :
|
1 |
$ sudo mysql -u root |
Pour vérifier toutes les bases de données actuellement disponibles, exécutez la requête suivante :
|
1 |
$ SHOW DATABASES; |
Créons une base de données dédiée pour notre application Django. Donnez-lui un nom approprié et cohérent avec le nom du projet :
|
1 |
$ CREATE DATABASE demoapp_data; |
Ensuite, vérifiez la création :
|
1 |
$ SHOW DATABASES; |
Maintenant, créez un utilisateur MySQL dédié. Nous allons configurer cet utilisateur comme propriétaire de la base de données. L'application Django utilisera les identifiants de cet utilisateur pour travailler avec la base de données MySQL :
|
1 |
$ CREATE USER 'demoapp_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password123'; |
Donnez à l'utilisateur demoapp_user toutes les autorisations sur la base de données demoapp_data:
|
1 |
$ GRANT ALL ON demoapp_data.* TO 'demoapp_user'@'%'; |
Pour que les modifications d'autorisations prennent effet, rechargez les tables de privilèges MySQL:
|
1 |
$ FLUSH PRIVILEGES; |
La base de données est maintenant prête à être connectée à l'application Django.
-
Connexion de la base de données à l'application Django
Enfin, nous allons configurer l'application Django pour utiliser la base de données pour le stockage des données. Ouvrez le script de configuration settings.py:
|
1 |
$ nano ~/myDemoApp/demoapp/demoapp/settings.py |
Faites défiler vers le bas jusqu'à l'entrée DATABASES et saisissez le code suivant :
|
1 2 3 4 5 6 7 8 |
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'OPTIONS': { 'read_default_file': '/etc/mysql/my.cnf', }, } } |
Enregistrez le fichier et fermez l'éditeur. L'étape suivante consiste à configurer le fichier de configuration décrit dans le code précédent. Utilisez sudo pour ouvrir le fichier texte à l'emplacement décrit :
|
1 |
$ sudo nano /etc/mysql/my.cnf |
Ce fichier de configuration contiendra des informations sur la base de données dédiée à Django et sur l'utilisateur que nous avons créé dans le serveur MySQL. Ajoutez les lignes suivantes à la fin du fichier :
|
1 2 3 4 5 |
[client] database = demoapp_data user = demoapp_user password = password123 default-character-set = utf8 |
Pour que les modifications prennent effet, nous devons redémarrer le serveur MySQL :
|
1 2 |
$ sudo systemctl daemon-reload $ sudo systemctl restart mysql |
-
Tester la connexion MySQL
Il est maintenant temps de vérifier si la connexion MySQL fonctionne correctement. Si le serveur Django fonctionne sans problème, alors la connexion fonctionne correctement. Sinon, il y a un problème. Tout d'abord, appliquez toutes les modifications apportées au projet Django :
|
1 |
$ python manage.py migrate |
Maintenant, déplacez-vous dans le répertoire de projet suivant et démarrez le serveur Django :
|
1 2 |
$ cd ~/myDemoApp/demoapp $ python manage.py runserver <server_ip_address>:8000 |
Ensuite, essayez d'accéder au serveur depuis un navigateur web :
|
1 |
$ http://<server_ip_address>:8000 |
Voilà ! Nous sommes arrivés avec succès sur la page de réussite de Django. Cela confirme également que la connexion MySQL fonctionne correctement. Une fois la tâche terminée, vous pouvez quitter l'environnement virtuel en toute sécurité :
|
1 |
$ deactivate |
Dernières réflexions
Dans ce guide, vous avez appris les bases de l'association de Django et MySQL. Nous avons créé une application Django et montré comment la connecter à une base de données MySQL. La magie réside dans le fichier de configuration de Django settings.py. Nous avons également modifié certains paramètres de base comme ALLOWED_HOSTS et TIME_ZONE. Django is incroyablement flexible. En plus de MySQL, il prend également en charge d'autres serveurs SQL comme PostgreSQL, des moteurs de serveur comme Nginx, etc.
Vous pouvez également consulter nos guides sur les meilleures pratiques pour installer, configurer et travailler avec Django :
- Installation du framework web Django sur Ubuntu 20.04
- Configuration de Django avec PostgreSQL, Nginx et Gunicorn sur Ubuntu 20.04
- Création de modèles Django : un tutoriel
Bonne programmation !





Commentaires
Aucun commentaire pour l'instant. Soyez le premier.