introduction
Un framework Web gratuit et à code source ouvert écrit en Python, Django permet une évolutivité, une réutilisation et un développement rapides.
Dans ce tutoriel, vous apprendrez à configurer la fondation initiale d'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 du blog à l'aide dedjango-admin
, la création de la base de données MySQL et la connexion de l'application Web à la base de données.
Conditions préalables
Ce didacticiel est le deuxième didacticiel de la sérieDjango Development. Pour suivre ce tutoriel, vous devez compléter les éléments suivants:
-
Installez le logiciel nécessaire pour utiliser Django sur un serveur Ubuntu 16.04. Si vous n'avez pas configuré de serveur avec les privilèges sudo ou n'avez pas encore installé Django, vous pouvez suivre le premier tutoriel de cette série, à l'adresse «https://www.digitalocean.com/community/tutorials/how-to-install -django-and-set-up-a-development-environment-on-ubuntu-16-04 [Comment installer Django et configurer un environnement de développement sur Ubuntu 16.04]. ”
-
Installez MySQL avant de suivre ce didacticiel. Si vous ne l’avez pas déjà installé, vous pouvez suivrestep 2 of “How To Install the Latest MySQL on Ubuntu 16.04”, qui inclut les commandes pour installer MySQL.
Avec les conditions préalables installées et notre environnement de développement Django mis en place, nous pouvons passer à la création de notre application.
[[step-1 -—- create-the-initial-django-project-skeleton]] == Étape 1 - Créer le squelette initial du projet Django
Afin de jeter les bases de notre application, nous devons générer le squelette du projet à l'aide de la commandedjango-admin
. Ce projet généré sera la base de notre application de blog.
La première chose à faire est de naviguer dans le répertoire de base, ce que nous pouvons faire avec la commande suivante:
cd ~
Ensuite, nous pouvons lister le contenu de notre répertoire actuel:
ls
Si vous avez commencé à partir de zéro avec le début de cette série, vous remarquerez qu’il existe un répertoire:
Outputdjango-apps
Cela contient le projet squelette que nous avons généré pour vérifier que tout a été installé correctement.
Comme ce n’était qu’un test, nous n’avons pas besoin de ce répertoire. Au lieu de cela, nous allons créer un nouveau répertoire pour notre application de blog. Appelez le répertoire quelque chose de significatif pour l'application que vous créez. Par exemple, nous appellerons les nôtresmy_blog_app
.
mkdir my_blog_app
Maintenant, accédez au répertoire nouvellement créé:
cd my_blog_app
Ensuite, créez et activez votre environnement virtuel Python.
python3 -m venv env
. env/bin/activate
Maintenant, installez Django:
pip install django
Dans le répertoiremy_blog_app
, nous allons générer un projet en exécutant la commande suivante:
django-admin startproject blog
Vérifiez que cela a fonctionné en accédant au répertoireblog/
:
cd blog
Le répertoireblog/
doit avoir été créé dans le répertoire courant,~/my_blog_app/
, après avoir exécuté la commandedjango-admin
précédente.
Exécutezls
pour vérifier que les éléments nécessaires ont été créés. Il doit y avoir un répertoireblog
et un fichiermanage.py
:
Outputblog manage.py
Maintenant que vous avez créé un répertoire de projet contenant le démarrage initial de votre application de blog, nous pouvons passer à l'étape suivante.
[[step-2 -—- edit-settings]] == Étape 2 - Modifier les paramètres
Depuis que nous avons généré le projet squelette, nous avons maintenant un fichiersettings.py
.
Pour que notre blog ait l'heure correcte associée à notre zone, nous éditerons le fichiersettings.py
afin qu'il utilise votre fuseau horaire actuel. Vous pouvez utiliser celist of time zones comme référence. Pour notre exemple, nous utiliserons le temps deAmerica/New_York
.
Naviguez maintenant vers le répertoire où se trouve le fichiersettings.py
:
cd ~/my_blog_app/blog/blog/
Ensuite, à l'aide de nano ou d'un éditeur de texte de votre choix, ouvrez et éditez le fichiersettings.py
:
nano settings.py
Nous éditons le champTIME_ZONE
, naviguez donc jusqu'à la section inférieure du fichier qui ressemble à ceci:
settings.py
...
# Internationalization
# https://docs.djangoproject.com/en/2.0/topics/i18n/
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
...
Nous allons modifier la ligneTIME_ZONE
afin qu'elle soit définie sur votre fuseau horaire actuel. Nous allons utiliser le fuseau horaire de New York dans cet exemple:
settings.py
...
# Internationalization
# https://docs.djangoproject.com/en/2.0/topics/i18n/
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'America/New_York'
USE_I18N = True
...
Laissons le fichier ouvert car nous devons ajouter un chemin pour nos fichiers statiques. Les fichiers qui sont servis à partir de votre application Web Django sont appelésstatic files. Cela peut inclure tous les fichiers nécessaires au rendu de la page Web complète, y compris JavaScript, CSS et les images.
Allez à la fin du fichiersettings.py
et ajoutezSTATIC_ROOT
comme indiqué ci-dessous:
settings.py
...
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.0/howto/static-files/
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
Maintenant que nous avons ajouté le fuseau horaire et le chemin des fichiers statiques, nous devrions ensuite ajouter notre adresse IP à la liste des hôtes autorisés. Accédez à la ligne du fichiersettings.py
où il est indiquéALLOWED_HOSTS
, ce sera vers le haut du fichiersettings.py
.
settings.py
...
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
ALLOWED_HOSTS = ['your server IP address']
# Application definition
...
Ajoutez l’adresse IP de votre serveur entre les crochets et les guillemets simples.
Une fois que vous êtes satisfait des modifications apportées, enregistrez le fichier en appuyant surCTRL
+X
, puis sury
pour confirmer les modifications.
Super, vous avez réussi à modifier votre fichiersettings.py
afin que le fuseau horaire approprié ait été configuré. Vous avez également ajouté le chemin d'accès à vos fichiers statiques et défini vosip address
en tant queALLOWED_HOST
pour votre application.
Nous pouvons maintenant configurer notre connexion à la base de données.
[[step-3 -—- install-mysql-database-connector]] == Étape 3 - Installer MySQL Database Connector
Pour utiliser MySQL avec notre projet, nous aurons besoin d’une bibliothèque de connecteurs de base de données Python 3 compatible avec Django. Nous allons donc installer le connecteur de base de données,mysqlclient
, qui est une version fourchue deMySQLdb
.
Selon la documentation demysqlclient
, «MySQLdb
est une interface compatible avec les threads avec le serveur de base de données populaireMySQL
qui fournit l'API de base de données Python.» La principale différence est quemysqlclient
a l'avantage supplémentaire d'inclure la prise en charge de Python 3.
La première chose à faire est d'installerpython3-dev
. Vous pouvez installerpython3-dev
en exécutant la commande suivante:
sudo apt-get install python3-dev
Une fois quepython3-dev
est installé, nous pouvons installer les en-têtes et bibliothèques de développement Python et MySQL nécessaires:
sudo apt-get install python3-dev libmysqlclient-dev
Lorsque vous voyez la sortie suivante:
OutputAfter this operation, 11.9 MB of additional disk space will be used.
Do you want to continue? [Y/n]
Entrezy
puis appuyez surENTER
pour continuer.
Ensuite, nous utiliseronspip3
pour installer la bibliothèquemysqlclient
à partir dePyPi
. Puisque notre version depip
pointe verspip3
, nous pouvons simplement utiliserpip
.
pip install mysqlclient
Vous verrez une sortie similaire à celle-ci, en vérifiant qu'elle est correctement installée:
successfully installed mysqlclientCollecting mysqlclient
Downloading mysqlclient-1.3.12.tar.gz (82kB)
100% |████████████████████████████████| 92kB 6.7MB/s
Building wheels for collected packages: mysqlclient
Running setup.py bdist_wheel for mysqlclient ... done
Stored in directory: /root/.cache/pip/wheels/32/50/86/c7be3383279812efb2378c7b393567569a8ab1307c75d40c5a
Successfully built mysqlclient
Installing collected packages: mysqlclient
Successfully installed mysqlclient-1.3.12
Maintenant, installez le serveurMySQL
, avec la commande suivante:
sudo apt-get install mysql-server
Nous avons maintenant installé avec succès le serveur MySQL et le client MySQL à l'aide de la bibliothèque de connecteurs PyPimysqlclient
.
[[step-4 -—- create-the-database]] == Étape 4 - Créer la base de données
Maintenant que le squelette de votre application Django a été configuré et quemysqlclient
etmysql-server
ont été installés, nous devrons configurer votre backend Django pour la compatibilité MySQL.
Vérifiez que le service MySQL est en cours d'exécution:
systemctl status mysql.service
Vous verrez une sortie qui ressemble à ceci:
mysql.service active● mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2017-12-29 11:59:33 UTC; 1min 44s ago
Main PID: 26525 (mysqld)
CGroup: /system.slice/mysql.service
└─26525 /usr/sbin/mysqld
Dec 29 11:59:32 ubuntu-512mb-nyc3-create-app-and-mysql systemd[1]: Starting MySQL Community Server...
Dec 29 11:59:33 ubuntu-512mb-nyc3-create-app-and-mysql systemd[1]: Started MySQL Community Server.
Si vous voyez plutôt une sortie similaire à celle-ci:
mysql.service inactive● mysqld.service
Loaded: not-found (Reason: No such file or directory)
Active: inactive (dead)
Vous pouvez exécutersudo systemctl start mysql
pour redémarrermysql.service
.
Vous pouvez maintenant vous connecter avec vos identifiants MySQL en utilisant la commande suivante. Où-u
est l'indicateur pour déclarer votre nom d'utilisateur et-p
est l'indicateur qui indique à MySQL que cet utilisateur a besoin d'un mot de passe:
mysql -u db_user -p
Ensuite, vous verrez la sortie qui vous demande ce mot de passedb_user’s:
OutputEnter password:
Une fois que vous avez entré votre mot de passe correctement, vous verrez la sortie suivante:
OutputWelcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.20-0ubuntu0.16.04.1 (Ubuntu)
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
Nous pouvons demander à MySQL de nous montrer les bases de données actuelles avec la commande suivante:
SHOW DATABASES;
Vous verrez une sortie similaire à la suivante, en supposant que vous n’ayez encore créé aucune base de données:
Output+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
[.note] #Note: Si vous obtenez une erreur lors de la tentative de connexion, vérifiez que votre mot de passe est correct et que vous avez correctement installé MySQL. Sinon, revisitez lestutorial on how to install and configure MySQL.
#
Par défaut, vous aurez 4 bases de données déjà créées,information_schema
,MySQL
,performance_schema
etsys
. Nous n’aurons pas besoin de les aborder car elles contiennent des informations importantes pour le serveur MySQL lui-même.
Maintenant que vous êtes connecté avec succès à votre serveur MySQL, nous allons créer la base de données initiale qui contiendra les données de notre blog.
Pour créer une base de données dans MySQL, exécutez la commande suivante en utilisant un nom explicite pour votre base de données:
CREATE DATABASE blog_data;
Une fois la création de la base de données réussie, vous verrez le résultat suivant:
OutputQuery OK, 1 row affected (0.00 sec)
[.Remarque]##
Note: Si vous voyez la sortie suivante:
database creation failedERROR 1007 (HY000): Can't create database blog_data; database exists
Ensuite, comme l'indique l'erreur, une base de données du nomblog_data
existe déjà.
Et si vous voyez l'erreur MySQL suivante, cela signifie qu'il y a une erreur de syntaxe MySQL. Vérifiez que vous avez entré la commande exactement comme indiqué dans ce didacticiel.
database creation failedERROR 1064 (42000): You have an error in your SQL syntax;
Ensuite, vérifiez que la base de données est maintenant répertoriée dans votre liste de bases de données disponibles:
SHOW DATABASES;
Vous devriez voir que la base de donnéesblog_data
fait partie des 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)
Vous avez créé avec succès une base de données MySQL pour votre blog.
Chaque fois que vous souhaitez quitter le serveur MySQL, appuyez surCTRL
+D
.
[[step-5 -—- add-the-mysql-database-connection-to-your-application]] == Étape 5 - Ajouter la connexion à la base de données MySQL à votre application
Enfin, nous ajouterons les informations d'identification de connexion à la base de données à votre application Django.
[.note] #Note: Il est important de se rappeler que les paramètres de connexion, selon la documentation Django, sont utilisés dans l'ordre suivant:
-OPTIONS
-NAME
,USER
,PASSWORD
,HOST
,PORT
-MySQL option files.
#
Apportons les modifications nécessaires pour connecter votre application de blog Django à MySQL.
Accédez au fichiersettings.py
et remplacez les lignesDATABASES
actuelles par les suivantes. Nous allons configurer votre dictionnaire de base de données pour qu'il sache utiliser MySQL comme base de base de données et dans quel fichier lire vos informations d'identification de connexion à la base de données:
settings.py
...
# Database
# https://docs.djangoproject.com/en/2.0/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'OPTIONS': {
'read_default_file': '/etc/mysql/my.cnf',
},
}
}
...
Ensuite, modifions le fichier de configuration afin qu’il dispose de vos informations d’identité MySQL. Utilisez nano commesudo
pour éditer le fichier et ajouter les informations suivantes:
sudo nano /etc/mysql/my.cnf
my.cnf
...
[client]
database = db_name
user = db_user
password = db_password
default-character-set = utf8
Lorsque le nom de la base de données dans notre cas estblog_data
, votre nom d'utilisateur pour le serveur MySQL est celui que vous avez créé et le mot de passe est le mot de passe du serveur MySQL que vous avez créé. En outre, vous remarquerez queutf8
est défini comme encodage par défaut, c'est un moyen courant d'encoder des données Unicode dans MySQL.
Une fois le fichier édité, nous devons redémarrer MySQL pour que les modifications prennent effet.
systemctl daemon-reload
systemctl restart mysql
Veuillez noter que le redémarrage de MySQL prend quelques secondes, soyez donc patient.
[[step-6 -—- test-mysql-connection-to-application]] == Étape 6 - Tester la connexion MySQL à l'application
Nous devons vérifier que les configurations dans Django détectent correctement votre serveur MySQL. Nous pouvons le faire en exécutant simplement le serveur. Si cela échoue, cela signifie que la connexion ne fonctionne pas correctement. Sinon, la connexion est valide.
Nous devrons accéder au répertoire suivant:
cd ~/my_blog_app/blog/
À partir de là, nous pouvons exécuter la commande suivante:
python manage.py runserver your-server-ip:8000
Vous verrez maintenant une sortie similaire à celle-ci:
OutputPerforming system checks...
System check identified no issues (0 silenced).
You have 13 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
January 4, 2018 - 15:45:39
Django version 2.0.1, using settings 'blog.settings'
Starting development server at http://your-server-ip:8000/
Quit the server with CONTROL-C.
[.note] #Note: Vous verrez que vous avez des migrations non appliquées dans la sortie. Mais ne vous inquiétez pas, cela sera abordé dans les prochains tutoriels. Cela n'affecte pas la configuration initiale de notre application. Veuillez continuer.
#
Suivez les instructions de la sortie et suivez le lien suggéré,http://your-server-ip:8000/
, pour afficher votre application Web et vérifier qu'elle fonctionne correctement.
Si votre page est similaire à la capture d'écran ci-dessus, votre application Django fonctionne comme prévu!
Lorsque vous avez terminé de tester votre application, vous pouvez appuyer surCTRL
+C
pour arrêter la commanderunserver
. Cela vous ramènera à votre environnement de programmation.
Lorsque vous êtes prêt à quitter votre environnement Python, vous pouvez exécuter la commandedeactivate
:
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éé la fondation initiale de votre blog Django. Vous avez installé, configuré et connecté MySQL au backend Django. Vous avez également ajouté des informations importantes au fichiersettings.py
de votre application, telles queTIME_ZONE
etALLOWED_HOSTS
.
Maintenant que ces paramètres et configurations de base sont terminés, vous pouvez maintenant commencer à développer des modèles et à appliquer des migrations dans votre application Django.