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 :
- Un serveur Ubuntu 22.04 avec un utilisateur non-root activé pour
sudo
et un pare-feu. Suivez notre guide de configuration initiale du serveur Ubuntu 22.04 pour configurer cela. - MySQL est installé pour servir de base de données. Vous pouvez le configurer en suivant notre tutoriel sur Comment installer MySQL sur Ubuntu 22.04.
- A Python environment set up. For this, follow our tutorial on How To Install Python 3 and Set Up a Programming Environment on Ubuntu 22.04
.
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:
Vous saurez que vous êtes dans le serveur MySQL lorsque l’invite change:
Inspectez les bases de données actuelles avec la commande suivante:
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 :
Une fois la base de données créée avec succès, votre sortie sera la suivante :
OutputQuery 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 :
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 :
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 :
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 :
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
:
Ajoutez les lignes suivantes et incluez vos informations pertinentes:
…
[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 :
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
:
Ensuite, naviguez jusqu’au répertoire nouvellement créé:
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:
Une fois qu’il est créé, vous pouvez l’activer:
Maintenant, installez Django dans cet environnement si ce n’est pas déjà fait:
Pendant que vous êtes dans le répertoire mon_application_blog
, générez un projet en exécutant la commande suivante:
Vérifiez que cela a fonctionné en naviguant jusqu’au répertoire 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:
La sortie affichera le répertoire blog
et un fichier manage.py
:
Outputblog 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 :
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é :
Ensuite, procédez à l’installation de 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é :
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 :
...
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 :
...
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
:
…
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:
...
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
:
...
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:
…
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:
...
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 :
Ensuite, exécutez migrate
pour vous assurer que les modifications sont prises en compte :
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
:
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
:
Vérifiez l’état pour vous assurer que ces paramètres d’autorisation ont été mis à jour avec succès:
OutputStatus: 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:
Ensuite, exécutez la commande suivante:
Vous recevrez une sortie similaire à ce qui suit:
OutputPerforming 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
:
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.