[PYTHON] Afficher les images ImageField normalement sur le serveur avec Django + Google Cloud Strage

Les images ne s'affichent pas correctement même lorsque vous utilisez ImageField sur des serveurs tels que Heroku et GAE (Google App Engine).

En effet, SQL ne prend pas en charge le téléchargement d'images et pour résoudre ce problème, vous devez télécharger l'image sur un stockage cloud tel que Google Cloud Strage ou Amazon S3.

Cette fois, je vais vous montrer comment télécharger des images sur Google Cloud Storage.

Documentation officielle de Django Strage (Google Cloud Storage) https://django-storages.readthedocs.io/en/latest/backends/gcloud.html

Installez Django Strage

Installez Django Strage (Google Cloud Storage), une bibliothèque Django pour travailler avec Google Cloud Strage sur Django, avec pip.

bash


$ pip install django-storages[google]

Obtenez des identifiants sur Google Cloud Platform

Depuis Google Cloud Platform, enregistrez vos informations d'identification Cloud Strage et obtenez un fichier JSON contenant vos informations d'identification.

Obtention d'un compte de service

Vous pouvez l'obtenir à partir du guide de démarrage Google (https://cloud.google.com/docs/authentication/getting-started).

étape 1 À partir du lien dans le guide de démarrage Google (https://cloud.google.com/docs/authentication/getting-started), sélectionnez "Accéder à la page [Créer une clé de compte de service]" 手順1

Étape 2 Entrez le nom du compte de service dans Créer un nouveau compte de service. GCS2 Sélectionnez ensuite "Stockage" -> "Administrateur de stockage" dans le rôle. Assurez-vous que le type de clé est JSON et cliquez sur le bouton "Créer". GCS3 Cela téléchargera le fichier JSON. GCS4

** Placez le fichier JSON téléchargé dans le répertoire racine de votre projet Django. ** **

Créer un bucket pour Google Cloud Storage

L'unité de Cloud Strage s'appelle un bucket (c'est-à-dire un bucket dans lequel placer des données) Créez-le pour stocker vos données.

Google Cloud Console (Cloud Strage) https://console.cloud.google.com/storage/browser

Si vous accédez à partir de l'URL ci-dessus, vous verrez l'écran de création suivant, alors créez un nouveau compartiment. 作成画面.png

Une fois terminé, l'écran ci-dessous s'affiche. 作成完了.png

Ceci termine les paramètres de la console Google Cloud Platform.

Paramètres dans Django

Ajoutez des paramètres à settings.py

Définissez le stockage par défaut et le nom du compartiment dans le fichier settings.py.

settings.py


STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATICFILES_STORAGE = 'storages.backends.gcloud.GoogleCloudStorage'

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
DEFAULT_FILE_STORAGE = 'storages.backends.gcloud.GoogleCloudStorage'

GS_BUCKET_NAME = '[YOUR_BUCKET_NAME_GOES_HERE]'

from google.oauth2 import service_account

GS_CREDENTIALS = service_account.Credentials.from_service_account_file(
    os.path.join(BASE_DIR, '[YOUR_AUTHENTICATON_KEY_FILE_NAME].json'),
)

Ceci termine les réglages.

Après cela, exécutons la commande suivante.

bash


$ python manage.py collectstatic

Et le déploiement des modifications de configuration sur le serveur devrait fonctionner.

Je vous remercie pour votre travail acharné.

Recommended Posts

Afficher les images ImageField normalement sur le serveur avec Django + Google Cloud Strage
Comment réparer la merde lors de la lecture d'images Google Cloud Storage de Django déployées sur GAE
Django + Apache avec mod_wsgi sur Windows Server 2016
Bug où les fichiers statiques ne sont pas affichés sur le serveur de développement AppEngine
Conseils de dessin avec matplotlib côté serveur
Incorporer d'autres images sur le raster avec ArcPy
Installez django sur python + anaconda et démarrez le serveur
Consultez les prévisions météo sur M5Stack + Google Cloud Platform
Accédez au serveur SQL de l'hôte avec python27 / pyodbc sur le conteneur
Jusqu'au début du tutoriel django avec pycharm sous Windows
Enregistrer des images sur le Web sur un lecteur avec Python (Colab)