Comment utiliser le découplage Python avec les espaces DigitalOcean dans Django

introduction

Python Decouple est une bibliothèque Python destinée à aider les développeurs à séparer plus facilement leurs paramètres de configuration du code. Conçu à l’origine pour Django, il s’agit désormais d’un outil générique Python permettant de stocker des paramètres et de définir des valeurs constantes distinctes de votre code.

Dans ce tutoriel, nous verrons comment installer Python Decouple et comment l’utiliser dans une application Django de base utilisant la solution de stockage d’objets de DigitalOcean, Spaces.

Conditions préalables

Pour être correctement préparé à ce tutoriel, vous aurez besoin des éléments suivants:

Avec une configuration de serveur initiale et une clé DigitalOcean Space et API, vous êtes prêt à commencer.

Étape 1 - Configurer un environnement virtuel

Avant de commencer, si vous ne l’avez pas déjà fait, le moment est venu de mettre à jour et de mettre à niveau votre serveur.

sudo apt-get update && sudo apt-get -y upgrade

Votre serveur aurait dû être livré avec Python 3. Exécutez la commande suivante pour vérifier qu’elle est installée:

sudo apt-get install python3

Ensuite, installons le gestionnaire de paquets pour Python.

sudo apt-get install -y python3-pip

Enfin, nous devrons installer le module * virtualenv * pour pouvoir configurer notre environnement de programmation:

sudo pip3 install virtualenv

Pour plus de conseils et d’informations sur la configuration et l’utilisation des environnements de programmation, consultez ce tutoriel à l’adresse https://www.digitalocean.com/community/tutorials/how-to-install-python-3-and-set-up-a -programming-environment-on-an-ubuntu-16-04-server [configuration d’un environnement virtuel].

Nous sommes maintenant prêts à passer à notre environnement de programmation Python.

Étape 2 - Créer une application Django et installer des dépendances

Nous devons ensuite créer l’application Django et installer les dépendances requises pour pouvoir utiliser DigitalOcean Spaces et Python Decouple.

Dans le répertoire personnel du serveur, nous devons créer le répertoire qui contiendra notre application Django. Exécutez la commande suivante pour créer un répertoire appelé ou un autre nom de votre choix. Ensuite, accédez au répertoire.

mkdir
cd

Dans le répertoire, créez votre environnement virtuel. Appelons ça.

virtualenv

Activez maintenant l’environnement virtuel avec la commande suivante:

. env/bin/activate

Vous saurez qu’il est activé une fois le préfixe modifié, ce qui ressemblera au suivant en fonction du répertoire dans lequel vous vous trouvez:

Dans l’environnement, installez le package Django à l’aide de pip. L’installation de Django nous permet de créer et d’exécuter des applications Django. Pour en savoir plus sur Django, lisez notre série de tutoriels à l’adresse Django Development.

pip install django

Créons maintenant un projet Django appelé à l’aide de la commande suivante:

django-admin startproject

Ensuite, nous devons installer Boto 3, un kit SDK AWS pour Python, qui nous permettra d’intégrer des solutions de stockage d’objets, telles que DigitalOcean Spaces, à notre application Django.

Au moment de la rédaction de cet article, Boto 3 est explicitement compatible avec S3. En raison de l’interopérabilité de Space avec S3, Spaces est également compatible avec Boto 3. Pour plus de détails sur les comparaisons entre le stockage d’objets Amazon S3 et DigitalOcean Spaces, lisez Spaces docs.

Exécutez la commande suivante pour installer Boto 3:

pip install boto3

Nous devons également installer * https: //django-storages.readthedocs.io/en/latest/ [django-storages] *, une collection de backends de stockage personnalisés pour Django et * boto3 *.

pip install django-storages

Enfin, installons Python Decouple **.

pip install python-decouple

Vous avez configuré vos dépendances dans l’environnement de votre application Django et êtes maintenant prêt à configurer des répertoires statiques et modèles.

Étape 3 - Ajouter des répertoires et des actifs

Avec notre environnement configuré avec toutes les dépendances, vous pouvez maintenant basculer vers le répertoire + mysite / mysite +,

cd ~/django-apps/mysite/mysite

Dans le répertoire + mysite / mysite +, exécutez les commandes suivantes pour créer les répertoires static et template.

mkdir static && mkdir templates

Nous allons ensuite créer les sous-répertoires pour les images et CSS à vivre dans le répertoire + static +.

mkdir static/img && mkdir static/css

Une fois les répertoires créés, nous téléchargerons un fichier de test que nous ajouterons éventuellement à notre stockage d’objets. Basculez vers le répertoire + img + car nous allons télécharger une image.

cd ~/django-apps/mysite/mysite/static/img

Dans ce répertoire, nous téléchargerons l’image du logo DigitalOcean à l’aide de la commande + wget + de Wget. Il s’agit d’un programme GNU couramment utilisé, préinstallé sur les distributions Ubuntu, permettant de récupérer le contenu des serveurs Web.

wget http://assets.digitalocean.com/logos/DO_Logo_icon_blue.png

Une fois que vous avez appuyé sur + ENTER +, vous verrez une sortie semblable à celle-ci:

OutputResolving www.digitalocean.com (www.digitalocean.com)... 104.16.24.4, 104.16.25.4
Connecting to www.digitalocean.com (www.digitalocean.com)|104.16.24.4|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1283 (1.3K) [image/png]
Saving to: ‘DO_Logo_icon_blue.png’

DO_Logo_icon_blue-6edd7377 100%[=====================================>]   1.25K  --.-KB/s    in 0s

2017-11-05 12:26:24 (9.60 MB/s) - ‘DO_Logo_icon_blue.png’ saved [1283/1283]

À ce stade, si vous exécutez la commande + ls +, vous remarquerez qu’une image nommée + DO_Logo_icon_blue.png + existe maintenant dans le répertoire + static / img / +.

Une fois ces répertoires configurés et l’image que nous allons stocker téléchargée sur le serveur, nous pouvons passer à l’édition des fichiers associés à notre application Django.

Étape 4 - Modifier les fichiers CSS et HTML

Nous allons commencer par éditer la feuille de style. Vous devez vous déplacer dans le répertoire + css + afin que nous puissions ajouter une feuille de style de base pour notre application Web.

cd ~/django-apps/mysite/mysite/static/css

Utilisez nano ou un autre éditeur de texte de votre choix pour modifier le document.

nano app.css

Une fois le fichier ouvert, ajoutez le CSS suivant:

app.css

body {
 margin: 0;
 background-color: #f1f1f1;
 font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
}

.container {
 width: 80%;
 border: 1px solid #ddd;
 background-color: #fff;
 padding: 20px;
 margin: 40px auto;
}

form {
 margin-bottom: 20px;
 padding: 10px;
 border: 1px solid #ff9900;
 width: 350px;
}

table {
 border-collapse: collapse;
 width: 100%;
}

table td,
table th {
 border: 1px solid #eceeef;
 padding: 5px 8px;
 text-align: left;
}

table thead {
 border-bottom: 2px solid #eceeef;
}

Une fois que vous avez terminé, vous pouvez enregistrer et fermer le fichier.

À partir de là, accédez au répertoire + templates.

cd ~/django-apps/mysite/mysite/templates

Nous devons ouvrir un fichier nommé + home.html + et y ajouter du code HTML pour définir le mode d’affichage de notre application Web de base. Avec nano, ouvrez le fichier pour qu’il soit prêt à être édité:

nano home.html

Dans le document, ajoutez ce qui suit:

home.html

{% load static %}
<!DOCTYPE html>
<html>
<head>
 <meta charset="utf-8">
 <title>Spaces + Django Tutorial</title>
 <link rel="stylesheet" type="text/css" href="{% static 'css/app.css' %}">
</head>
<body>
 <center>
 <header>
   <h1>Spaces + Django Tutorial</h1>
 </header>
 <main>
   <img src="{% static 'img/DO_Logo_icon_blue.png' %}">
   <h2>Congratulations, you’re using Spaces!</h2>
 </main>
 </center>
</body>
</html>

Enregistrez et fermez le fichier. Le dernier fichier que nous mettrons à jour est le fichier + urls.py + pour qu’il pointe vers votre fichier + home.html + nouvellement créé. Nous devons nous déplacer dans le répertoire suivant:

cd ~/django-apps/mysite/mysite

Utilisez nano pour modifier le fichier urls.py.

nano urls.py

Vous pouvez supprimer tout le contenu du fichier puis ajouter les éléments suivants:

urls.py

from django.conf.urls import url
from django.views.generic import TemplateView


urlpatterns = [
   url(r'^$', TemplateView.as_view(template_name='home.html'), name='home'),
]

Avec la configuration de ces fichiers, nous pouvons ensuite configurer nos paramètres afin de les intégrer au stockage d’objets.

Étape 5 - Utiliser les informations d’identification Python Decouple to Abstract Spaces

Dans votre environnement virtuel, accédez à l’emplacement du fichier + settings.py +. C’est ici que nous allons créer le fichier + settings.ini + pour stocker vos informations d’identification séparément.

cd ~/django-apps/mysite/mysite

Créez le fichier + settings.ini + en utilisant + touch +, une commande Linux qui crée de nouveaux fichiers vides dans le répertoire à partir duquel il est appelé.

touch settings.ini

Le fichier de paramètres en cours de création aura une extension de fichier. Python Decouple examinera ce fichier pour les données de paramètres. C’est également à cet endroit que votre fichier de paramètres fera référence pour la clé d’API. Vous pouvez également utiliser une extension alternative à.

Maintenant, ouvrez le fichier en utilisant votre éditeur de texte préféré, tel que nano.

nano settings.ini

Dans ce document, nous aurons un en-tête de section, + [settings] +, requis par Python Decouple, et nous ajouterons nos informations d’identification Spaces en les assignant à https://www.digitalocean.com/community/tutorials/how -to-use-variables-in-python-3 [variables]. Votre fichier complet devrait ressembler à ceci:

paramètres.ini

[settings]
SPACES_ACCESS_KEY=
SPACES_SECRET_ACCESS_KEY=

Pour accéder à ces informations d’identification, nous devrons faire référence au fichier + settings.ini + à partir du fichier + settings.py +.

Dans l’étape suivante, nous verrons la configuration complète du fichier + settings.py +.

Étape 6 - Mise à jour des paramètres

Il est maintenant temps de mettre à jour votre fichier de paramètres avec vos informations d’identification Spaces afin que nous puissions tirer parti de la page que nous avons configurée pour afficher l’image.

Assurez-vous que vous êtes au bon endroit pour accéder à votre fichier de paramètres.

cd ~/django-apps/mysite/mysite

Ouvrez le fichier pour le modifier avec nano ou un autre éditeur de texte:

nano settings.py

En haut du fichier, nous devrons ajouter une https://www.digitalocean.com/community/tutorials/how-to-import-modules-in-python-3 [instruction `` + import + `]] pour utiliser le module de configuration de Decouple.

settings.py

...
import os

...

Descendez dans le fichier jusqu’aux hôtes autorisés et ajoutez l’adresse IP de votre serveur.

settings.py

...
ALLOWED_HOSTS = ['']
...

Ajoutez ensuite + storages + à la section des applications installées du fichier de paramètres et supprimez + django.contrib.admin + car nous ne l’utilisons pas dans ce tutoriel. Cela devrait ressembler à ce qui suit.

settings.py

...
# Application definition

INSTALLED_APPS = [
   'django.contrib.auth',
   'django.contrib.contenttypes',
   'django.contrib.sessions',
   'django.contrib.messages',
   'django.contrib.staticfiles',

]
...

Remplacez et ajoutez le texte en surbrillance à la section + TEMPLATES + du fichier de paramètres afin que le projet sache où localiser votre fichier + home.html +.

settings.py

...
TEMPLATES = [
   {
       'BACKEND': 'django.template.backends.django.DjangoTemplates',
       'DIRS': [],
       'APP_DIRS': True,
       'OPTIONS': {
           'context_processors': [
               'django.template.context_processors.debug',
               'django.template.context_processors.request',
               'django.contrib.auth.context_processors.auth',
               'django.contrib.messages.context_processors.messages',
           ],
       },
   },
]
...

Enfin, mettons à jour vos paramètres en bas du fichier. Nous ajouterons ce qui suit sous la section + # Fichiers statiques +. Les deux premières lignes ajoutent la référence au fichier, de sorte qu’il puisse récupérer les paramètres de configuration.

En-dessous, veillez à ajouter votre propre nom de compartiment. Au moment de la rédaction de cet article, NYC3 est la seule région dans laquelle les espaces se trouvent actuellement. Elle est donc transmise en tant qu’URL de noeud final.

Pour un emplacement de terminal, ajoutez le répertoire dans lequel vous souhaitez importer vos fichiers. Vous pouvez ajouter un répertoire via votre navigateur dans l’interface Spaces.

settings.py

...
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.11/howto/static-files/

AWS_ACCESS_KEY_ID = config('SPACES_ACCESS_KEY')
AWS_SECRET_ACCESS_KEY = config('SPACES_SECRET_ACCESS_KEY')
AWS_STORAGE_BUCKET_NAME = ''
AWS_S3_ENDPOINT_URL = 'https://nyc3.digitaloceanspaces.com'
AWS_S3_OBJECT_PARAMETERS = {
   'CacheControl': 'max-age=86400',
}
AWS_LOCATION = ''

STATICFILES_DIRS = [
   os.path.join(BASE_DIR, 'mysite/static'),
]
STATIC_URL = 'https://%s/%s/' % (AWS_S3_ENDPOINT_URL, AWS_LOCATION)
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'

Nous avons maintenant extrait nos informations d’identification Spaces du code Python et notre fichier de paramètres est prêt à intégrer notre application Django au stockage d’objets.

Lançons l’application Web Django pour vérifier que tout a été configuré correctement.

Étape 7 - Recueillir des fichiers statiques

Nous allons maintenant lancer + collectstatic + et vous remarquerez que des fichiers sont en cours de transfert, y compris l’image que nous avons enregistrée dans notre répertoire statique. Il sera transféré à l’emplacement Spaces que nous avons identifié dans le fichier de paramètres.

Pour ce faire, naviguons vers + ~ / django-apps / mysite / +:

cd ~/django-apps/mysite

Dans le répertoire, exécutez la commande suivante:

python manage.py collectstatic

Vous verrez la sortie suivante et devriez répondre + yes + lorsque vous y êtes invité.

OutputYou have requested to collect static files at the destination
location as specified in your settings.

This will overwrite existing files!
Are you sure you want to do this?

Type 'yes' to continue, or 'no' to cancel:

Ensuite, vous verrez une sortie supplémentaire vous indiquant que le fichier a été copié dans Spaces.

OutputCopying '/root/django-apps/mysite/mysite/static/css/app.css'

1 static file copied, 1 unmodified.

À ce stade, si vous revenez dans votre compartiment à partir de votre compte DigitalOcean Cloud, les répertoires + css + et + img + seront ajoutés au dossier que vous leur avez indiqué, avec + app.css + dans le répertoire ` + css + et l’image + DO-Logo_icon_blue-.png + dans le répertoire + img + `.

Étape 8 - Exécuter l’application

Si vous avez un pare-feu UFW configuré, laissez-nous d’abord laisser le trafic entrant passer par le port 8000 en exécutant la commande suivante:

sudo ufw allow 8000

Votre environnement virtuel étant toujours activé, naviguez jusqu’à l’emplacement du fichier et exécutez l’application à l’aide des commandes suivantes:

cd ~/django-apps/mysite
python manage.py runserver <your-server-ip>:8000

Dans un navigateur Web, accédez à http: //: 8000 pour voir le résultat de l’application Django que vous avez créée. Vous verrez la sortie suivante dans votre navigateur:

image: https: //assets.digitalocean.com/articles/eng_python/django/python-decouple-spaces.png [Exemple d’application Djoop et Python Decouple de DigitalOcean Spaces]

Lorsque vous avez terminé de tester votre application, vous pouvez appuyer sur les touches + CTRL + + + + + + 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 +:

deactivate

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

Conclusion

Dans ce didacticiel, vous avez créé avec succès une application Django qui sert les fichiers de DigitalOcean Spaces tout en extrayant les informations d’identification Spaces du code Python. Au cours du processus, vous avez appris à connaître les fichiers statiques, à gérer ces derniers, à les servir à partir d’un service cloud et à découpler vos paramètres de configuration de votre fichier de paramètres python.

Vous pouvez continuer à apprendre le développement Web avec Python et Django en lisant notre série de tutoriels à l’adresse Django Development.

Related