[PYTHON] Résout le problème que les fichiers statiques (CSS, JS, img) ne sont pas lus lorsque DEBUG = False dans Django.

Si le mode de débogage est défini sur False sur un serveur tel que Heroku ou GAE (Google App Engine), les fichiers statiques fournis par Django pour le développement ne seront pas fournis et CSS, JS, img, etc. peuvent ne pas s'afficher. Il y a.

Je peux donc résoudre ce problème en téléchargeant un fichier statique sur Google Cloud Storage, et je voudrais expliquer comment le faire.

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 identifiants Cloud Strage et obtenez un fichier JSON contenant vos identifiants.

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'
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

Résout le problème que les fichiers statiques (CSS, JS, img) ne sont pas lus lorsque DEBUG = False dans Django.
Une solution au problème que les fichiers contenant [et] ne sont pas répertoriés dans glob.glob ()
Bug où les fichiers statiques ne sont pas affichés sur le serveur de développement AppEngine
[Django] css dans le projet ne peut pas être lu
[Jinja2] Solution au problème que les variables ajoutées dans l'instruction for ne sont pas héritées
Résolvez le problème que CSS n'est pas reflété lors du développement d'applications Web avec Flask
Résolution du problème selon lequel l'image n'était pas affichée dans ROMol lors du chargement avec PandasTools.LoadSDF.