Comment Créer une Application Django et la Connecter à une Base de Données

Introduction

Django est un cadre web gratuit et open source écrit en Python. Cet outil permet la scalabilité, la réutilisabilité et le développement rapide.

Dans ce tutoriel, vous apprendrez comment configurer les bases initiales pour un site web de blog avec des connexions à une base de données MySQL. Cela impliquera la création de la structure squelette de l’application web de blog en utilisant django-admin, la création de la base de données MySQL et la connexion de l’application web à la base de données.

Django vous fournira un environnement de développement pour travailler sur votre application web de blog, mais vous devrez prendre plus de mesures avant de rendre votre blog accessible sur Internet.

Prérequis

Pour suivre ce tutoriel, vous aurez besoin de :

Une fois que tout est installé et configuré, vous pouvez passer à la première étape.

Étape 1 — Création de la base de données

Django prend en charge plusieurs systèmes de gestion de base de données populaires, mais ce guide se concentre sur la connexion de Django à une base de données MySQL. Pour ce faire, vous devez créer une base de données sur votre instance MySQL ainsi qu’un profil d’utilisateur MySQL que Django peut utiliser pour se connecter à la base de données.

Pour configurer cela, connectez-vous à votre base de données MySQL en tant qu’utilisateur MySQL root avec la commande suivante:

  1. sudo mysql

Vous saurez que vous êtes dans le serveur MySQL lorsque l’invite change:

Inspectez les bases de données actuelles avec la commande suivante:

  1. SHOW DATABASES;

Votre sortie sera similaire à ce qui suit, en supposant que vous n’avez pas encore créé de bases de données:

Output
+--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 4 rows in set (0.00 sec)

Par défaut, vous aurez déjà 4 bases de données créées: information_schema, MySQL, performance_schema et sys. Vous n’aurez pas besoin de les toucher, car elles contiennent des informations importantes pour le serveur MySQL lui-même.

Au lieu de cela, créez la base de données initiale qui contiendra les données de votre blog.

Pour créer une base de données dans MySQL, exécutez la commande suivante en utilisant un nom significatif pour votre base de données :

  1. CREATE DATABASE blog_data;

Une fois la base de données créée avec succès, votre sortie sera la suivante :

Output
Query OK, 1 row affected (0.00 sec)

Vérifiez que la base de données est maintenant répertoriée parmi les bases de données disponibles :

  1. SHOW DATABASES;

La base de données blog_data devrait maintenant figurer parmi les bases de données incluses dans la sortie :

Output
+--------------------+ | Database | +--------------------+ | information_schema | | blog_data | | mysql | | performance_schema | | sys | +--------------------+ 5 rows in set (0.00 sec)

Ensuite, créez un compte utilisateur MySQL distinct que Django utilisera pour faire fonctionner la nouvelle base de données. La création de bases de données et de comptes spécifiques peut vous aider d’un point de vue de la gestion et de la sécurité. Nous utiliserons le nom djangouser dans ce guide. Vous pouvez utiliser le nom de votre choix, mais il peut être utile de choisir un nom descriptif.

Vous allez créer ce compte, définir un mot de passe et accorder l’accès à la base de données que vous avez créée. Tout d’abord, créez l’utilisateur et définissez son mot de passe en tapant la commande suivante. N’oubliez pas de choisir un mot de passe fort pour votre base de données en remplaçant password dans cet exemple :

  1. CREATE USER 'djangouser'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Faites savoir à la base de données que djangouser doit avoir un accès complet à la base de données que vous avez configurée :

  1. GRANT ALL ON blog_data.* TO 'djangouser'@'localhost';

Vous disposez maintenant d’une base de données et d’un compte utilisateur, chacun créé spécifiquement pour Django. Rafraîchissez les privilèges afin que l’instance actuelle de MySQL prenne connaissance des modifications récentes apportées :

  1. FLUSH PRIVILEGES;

Une fois cela fait, vous pouvez quitter le serveur MySQL en écrivant EXIT; ou en appuyant sur CTRL + D.

Étape 2 — Création d’un fichier d’options MySQL

Au lieu de spécifier les détails de votre connexion MySQL dans le fichier de configuration Django, vous pouvez les stocker dans un fichier d’options. De nombreux programmes MySQL peuvent lire des fichiers d’options — également appelés fichiers de configuration — pour des informations telles que les options de démarrage ou les détails de connexion. Cela peut être pratique, car vous n’avez à stocker vos informations d’identification de base de données qu’à un seul endroit.

Ouvrez le fichier de configuration my.cnf avec votre éditeur de texte préféré pour mettre à jour vos informations d’identification MySQL. Ici, nous utiliserons nano :

  1. sudo nano /etc/mysql/my.cnf

Ajoutez les lignes suivantes et incluez vos informations pertinentes:

/etc/mysql/my.cnf
…

[client]
database = blog_data
user = djangouser
password = your_actual_password
default-character-set = utf8

Remarquez que utf8 est défini comme l’encodage par défaut. C’est une façon courante de coder les données Unicode dans MySQL. Lorsque vous êtes sûr que vos détails sont corrects, enregistrez et fermez le fichier. Si vous avez utilisé nano pour modifier le fichier, vous pouvez le faire en appuyant sur CTRL + O pour enregistrer le fichier, puis sur CTRL + X pour fermer l’éditeur.

Une fois le fichier modifié, redémarrez MySQL pour que les changements prennent effet :

  1. sudo systemctl daemon-reload
  2. sudo systemctl restart mysql

Notez que le redémarrage de MySQL prend quelques secondes, veuillez donc patienter.

Étape 3 — Création du squelette initial du projet Django

Dans cette étape, vous allez poser les bases de votre application en générant le squelette du projet à l’aide de la commande django-admin.

Naviguez jusqu’au répertoire où vous souhaitez construire votre application de blog. À l’intérieur de ce répertoire, créez un répertoire spécifique pour construire l’application. Appelez le répertoire quelque chose de significatif pour l’application que vous construisez. À titre d’exemple, nous le nommerons mon_application_blog:

  1. mkdir my_blog_app

Ensuite, naviguez jusqu’au répertoire nouvellement créé:

  1. cd my_blog_app

Ensuite, passez à l’environnement de programmation que vous souhaitez utiliser pour travailler avec Django. Vous pouvez utiliser un environnement existant ou en créer un nouveau. La commande suivante crée un nouvel environnement appelé env, mais vous devriez utiliser un nom qui a du sens pour vous:

  1. python3 -m venv env

Une fois qu’il est créé, vous pouvez l’activer:

  1. . env/bin/activate

Maintenant, installez Django dans cet environnement si ce n’est pas déjà fait:

  1. pip install django

Pendant que vous êtes dans le répertoire mon_application_blog, générez un projet en exécutant la commande suivante:

  1. django-admin startproject blog

Vérifiez que cela a fonctionné en naviguant jusqu’au répertoire blog/:

  1. cd blog

Ensuite, exécutez ls pour vérifier que les fichiers et répertoires nécessaires ont été créés dans le dossier du projet:

  1. ls

La sortie affichera le répertoire blog et un fichier manage.py:

Output
blog manage.py

Maintenant que vous avez créé un répertoire de projet contenant le début initial de votre application de blog, vous pouvez passer à l’étape suivante.

Étape 4 — Installation du connecteur de base de données MySQL

Pour utiliser MySQL avec votre projet, vous avez besoin d’une bibliothèque de connecteur de base de données Python 3 compatible avec Django. Cette étape explique comment installer un tel connecteur de base de données, mysqlclient, qui est une version forkée de MySQLdb.

Tout d’abord, installez les en-têtes de développement MySQL nécessaires et les bibliothèques :

  1. sudo apt install libmysqlclient-dev default-libmysqlclient-dev

Ensuite, utilisez pip pour installer le package wheel. Wheel est un format d’emballage utilisé en Python pour installer des modules depuis l’Index des Packages Python. L’installation de programmes Python à partir de packages wheel est généralement plus rapide et plus efficace en termes de ressources que la construction de packages à partir de leur code source. Pour installer et travailler avec des programmes emballés sous forme de wheels, vous devez d’abord vous assurer que le package wheel est installé :

  1. pip install wheel

Ensuite, procédez à l’installation de mysqlclient :

  1. pip install mysqlclient

Votre sortie sera similaire à ce qui suit, vérifiant que le client a été correctement installé :

Output
... Successfully installed mysqlclient-2.1.1

Vous avez maintenant installé avec succès le client MySQL en utilisant la bibliothèque de connecteur PyPi mysqlclient.

Étape 5 — Modification des paramètres

Lorsque vous avez précédemment exécuté django-admin, il a créé un fichier de configuration pour Django nommé settings.py. Vous devez modifier quelques paramètres par défaut dans ce fichier afin que tout fonctionne correctement.

Pour modifier le fichier, ouvrez le chemin d’accès au fichier avec votre éditeur de texte préféré :

  1. nano ~/my_blog_app/blog/blog/settings.py

Pour que votre blog ait l’heure correcte associée à votre région, vous pouvez modifier le fichier settings.py pour qu’il utilise votre fuseau horaire actuel. Vous pouvez utiliser cette liste de fuseaux horaires comme référence. Pour notre exemple, nous utiliserons l’heure de America/New_York.

Dans le fichier, accédez au champ TIME_ZONE près de la section inférieure du fichier :

~/my_blog_app/blog/blog/settings.py
...

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True
...

Modifiez la ligne TIME_ZONE, de sorte qu’elle soit définie sur votre fuseau horaire actuel. Nous utiliserons le fuseau horaire de New York dans cet exemple :

~/my_blog_app/blog/blog/settings.py
...

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'America/New_York'

USE_I18N = True
...

Gardez le fichier ouvert car ensuite, vous devez ajouter un chemin pour vos fichiers statiques. Les fichiers servis par votre application web Django sont appelés fichiers statiques. Cela pourrait inclure tous les fichiers nécessaires pour rendre la page web complète, y compris JavaScript, CSS et images.

Allez à la fin du fichier settings.py et ajoutez STATIC_ROOT :

~/my_blog_app/blog/blog/settings.py
…

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
...

Maintenant que vous avez ajouté le fuseau horaire et le chemin pour les fichiers statiques, ajoutez votre adresse IP à la liste des hôtes autorisés. Accédez à la ligne du fichier settings.py où il est indiqué ALLOWED_HOSTS, ce sera vers le haut du fichier settings.py. Ajoutez l’adresse IP de votre serveur, entourée de guillemets simples, entre les crochets carrés:

~/my_blog_app/blog/blog/settings.py
...
ALLOWED_HOSTS = ['your_server_IP_address']
...

Ensuite, ajoutez le module Python OS qui fournit diverses fonctionnalités pour les répertoires. Sans ce module, vous recevrez une erreur lors de la configuration de l’utilisateur administratif pour commencer à utiliser l’interface Django. Pour ce faire, vous devez importer le module os qui fonctionnera sur votre système d’exploitation respectif. Ajoutez la ligne import os au-dessus de la ligne from pathlib import Path:

~/my_blog_app/blog/blog/settings.py
...
import os
from pathlib import Path
...

Jusqu’à présent, vous avez modifié votre fichier settings.py pour que le bon fuseau horaire soit configuré. Vous avez également ajouté le chemin pour vos fichiers statiques, défini votre adresse IP comme ALLOWED_HOST pour votre application, et importé le module Python OS pour aider à configurer votre utilisateur administratif plus tard.

Le dernier extrait à ajouter à votre fichier concerne les informations d’identification de connexion à la base de données pour connecter votre application de blog Django à MySQL. À cette fin, trouvez le dictionnaire DATABASES dans le fichier. Il ressemblera par défaut à ce qui suit:

~/my_blog_app/blog/blog/settings.py
…

DATABASES = {
	'default': {
    	'ENGINE': 'django.db.backends.sqlite3',
    	'NAME': BASE_DIR / 'db.sqlite3',
	}
}
...

Remplacez les options ENGINE et NAME du dictionnaire DATABASES par les lignes suivantes:

~/my_blog_app/blog/blog/settings.py
...

DATABASES = {
	'default': {
    	'ENGINE': 'django.db.backends.mysql',
    	'OPTIONS': {
        	'read_default_file': '/etc/mysql/my.cnf',
    	},
	}
}
...

La ligne 'ENGINE': 'django.db.backends.mysql' indique à Django d’utiliser son backend de base de données MySQL intégré. L’option read_default_file pointe vers /etc/mysql/my.cnf, le fichier d’options MySQL que vous avez précédemment édité. Cela indique à Django où il peut trouver les détails de connexion pertinents pour se connecter à la base de données MySQL que vous avez créée à l’étape 1.

Notez que Django lit les paramètres de connexion à la base de données dans l’ordre suivant :

  • OPTIONS
  • NAME, USER, PASSWORD, HOST, PORT
  • Fichiers d’options MySQL

En pointant Django vers votre fichier d’options MySQL dans le paramètre OPTIONS comme dans cet exemple, cela prendra le pas sur tout paramètre NAME, qui remplacerait sinon le fichier d’options si vous le pointiez en dehors du paramètre OPTIONS.

À ce stade, vous pouvez enregistrer et fermer le fichier.

Ensuite, vérifiez les changements de migration en exécutant la commande suivante :

  1. python manage.py makemigrations

Ensuite, exécutez migrate pour vous assurer que les modifications sont prises en compte :

  1. python manage.py migrate

Maintenant que vos modifications ont été migrées, vous pouvez créer un utilisateur administrateur à utiliser pour l’interface d’administration de Django. Faites ceci avec la commande createsuperuser :

  1. python manage.py createsuperuser

On vous demandera un nom d’utilisateur, une adresse e-mail et un mot de passe pour votre utilisateur.

Une fois ces informations saisies, vous pouvez passer à l’ajustement de vos paramètres de pare-feu pour permettre les tests.

Étape 6 — Ajustement des paramètres du pare-feu

Avant de tester votre application web Django, vous devez vous assurer que vos paramètres de pare-feu ont été ajustés. Commencez par modifier vos paramètres ufw pour autoriser l’accès au port 8000:

  1. sudo ufw allow 8000

Vérifiez l’état pour vous assurer que ces paramètres d’autorisation ont été mis à jour avec succès:

  1. sudo ufw status
Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 8000 ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 8000 (v6) ALLOW Anywhere (v6)

Vos paramètres de pare-feu sont désormais correctement ajustés pour permettre le test de votre connexion à l’étape suivante.

Étape 7 — Test de la connexion MySQL à l’application

Vous pouvez maintenant vérifier que les configurations dans Django détectent correctement votre serveur MySQL. Vous pouvez le faire en exécutant le serveur. S’il échoue, cela signifie que la connexion ne fonctionne pas correctement. Sinon, la connexion est valide.

Commencez par naviguer dans le répertoire suivant:

  1. cd ~/my_blog_app/blog/

Ensuite, exécutez la commande suivante:

  1. python manage.py runserver your-server-ip:8000

Vous recevrez une sortie similaire à ce qui suit:

Output
Performing system checks... System check identified no issues (0 silenced). July 19, 2022 - 13:26:08 Django version 4.0.6, using settings 'blog.settings' Starting development server at http://your-server-ip:8000/ Quit the server with CONTROL-C.

Remarque: Vous remarquerez que vous avez des migrations non appliquées dans la sortie. Ne vous inquiétez pas, cela n’affecte pas la configuration initiale de votre application, et vous pouvez continuer.

Suivez les instructions de la sortie et suivez le lien suggéré, http://l'adresse-de-votre-serveur:8000/, pour visualiser votre application web et vérifier qu’elle fonctionne correctement.

Si votre page apparaît similaire à la capture d’écran ci-dessus, votre application Django fonctionne comme prévu.

Lorsque vous avez terminé de tester votre application, appuyez sur CTRL + C pour arrêter la commande runserver. Cela vous ramènera à votre environnement de programmation.

Lorsque vous êtes prêt à quitter votre environnement Python, vous pouvez exécuter la commande deactivate:

  1. deactivate

La désactivation de votre environnement de programmation vous ramènera à l’invite de commande du terminal.

Conclusion

Dans ce tutoriel, vous avez créé les bases initiales de votre blog Django. Vous avez installé, configuré et connecté MySQL au backend Django. Vous avez également ajouté des informations importantes au fichier settings.py de votre application telles que TIME_ZONE, ALLOWED_HOSTS, import os, et les identifiants de la base de données pour connecter votre application Django à MySQL. Vous avez également ajusté les paramètres du pare-feu pour garantir le bon déroulement des tests.

Maintenant que ces réglages et configurations de base sont terminés, vous pouvez commencer à développer des modèles et à appliquer des migrations dans votre application Django.

Source:
https://www.digitalocean.com/community/tutorials/how-to-create-a-django-app-and-connect-it-to-a-database