[PYTHON] Behebt ein Problem, bei dem statische Dateien (CSS, JS, img) nicht geladen werden, wenn DEBUG = False in Django ist.

Wenn der Debug-Modus auf einem Server wie Heroku oder GAE (Google App Engine) auf False gesetzt ist, werden die von Django für die Entwicklung bereitgestellten statischen Dateien nicht bereitgestellt und CSS, JS, img usw. werden möglicherweise nicht angezeigt. Es gibt.

Daher kann ich dieses Problem lösen, indem ich eine statische Datei in Google Cloud Storage hochlade. Ich möchte erklären, wie das geht.

Offizielle Dokumentation zu Django Strage (Google Cloud Storage) https://django-storages.readthedocs.io/en/latest/backends/gcloud.html

Installieren Sie Django Strage

Installieren Sie "Django Strage (Google Cloud Storage)", eine Django-Bibliothek für die Arbeit mit Google Cloud Strage auf Django, mit pip.

bash


$ pip install django-storages[google]

Erhalten Sie Anmeldeinformationen auf der Google Cloud Platform

Registrieren Sie in der Google Cloud Platform Ihre Cloud Strage-Anmeldeinformationen und erhalten Sie eine JSON-Datei mit Ihren Anmeldeinformationen.

Holen Sie sich ein Dienstkonto

Sie können es aus dem Google Start Guide (https://cloud.google.com/docs/authentication/getting-started) herunterladen.

Schritt 1 Wählen Sie unter dem Link im Google Start Guide (https://cloud.google.com/docs/authentication/getting-started) die Option "Gehe zur Seite [Dienstkontoschlüssel erstellen]]." 手順1

Schritt 2 Geben Sie den Namen des Dienstkontos unter Neues Dienstkonto erstellen ein. GCS2 Wählen Sie dann "Speicher" -> "Speicheradministrator" aus der Rolle. Stellen Sie sicher, dass der Schlüsseltyp JSON ist, und klicken Sie auf die Schaltfläche "Erstellen". GCS3 Dadurch wird die JSON-Datei heruntergeladen. GCS4

** Legen Sie die heruntergeladene JSON-Datei im Stammverzeichnis Ihres Django-Projekts ab. ** ** **

Erstellen eines Buckets für Google Cloud Storage

Die Einheit von Cloud Strage wird als Bucket bezeichnet (dh wie ein Bucket zum Einfügen von Daten). Erstellen Sie dies, um Ihre Daten zu speichern.

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

Wenn Sie über die oben genannte URL darauf zugreifen, wird der folgende Erstellungsbildschirm angezeigt. Erstellen Sie daher einen neuen Bucket. 作成画面.png

Wenn Sie fertig sind, wird der folgende Bildschirm angezeigt. 作成完了.png

Damit sind die Einstellungen in der Google Cloud Platform-Konsole abgeschlossen.

Einstellungen in Django

Fügen Sie Einstellungen zu settings.py hinzu

Legen Sie den Standardspeicher und den Bucket-Namen in der Datei settings.py fest.

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

Damit sind die Einstellungen abgeschlossen.

Führen Sie danach den folgenden Befehl aus.

bash


$ python manage.py collectstatic

Das Bereitstellen der Konfigurationsänderungen auf dem Server sollte funktionieren.

Danke für deine harte Arbeit.

Recommended Posts

Behebt ein Problem, bei dem statische Dateien (CSS, JS, img) nicht geladen werden, wenn DEBUG = False in Django ist.
Eine Lösung für das Problem, dass Dateien mit [und] nicht in glob.glob () aufgeführt sind
Fehler, bei dem statische Dateien nicht auf dem AppEngine-Entwicklungsserver angezeigt werden
[Django] CSS im Projekt kann nicht gelesen werden
[Jinja2] Lösung für das Problem, dass die in der for-Anweisung hinzugefügten Variablen nicht vererbt werden
Lösen Sie das Problem, dass CSS bei der Entwicklung von Webanwendungen mit Flask nicht berücksichtigt wird
Das Problem, dass das Bild beim Laden mit PandasTools.LoadSDF nicht in ROMol angezeigt wurde, wurde behoben.