Bilder werden auch bei Verwendung von ImageField auf Servern wie Heroku und GAE (Google App Engine) nicht richtig angezeigt.
Dies liegt daran, dass SQL das Hochladen von Bildern nicht unterstützt. Um dies zu beheben, müssen Sie das Bild in einen Cloud-Speicher wie Google Cloud Strage oder Amazon S3 hochladen.
Dieses Mal zeige ich Ihnen, wie Sie Bilder in Google Cloud Storage hochladen.
Offizielle Dokumentation zu Django Strage (Google Cloud Storage) https://django-storages.readthedocs.io/en/latest/backends/gcloud.html
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]
Registrieren Sie in der Google Cloud Platform Ihre Cloud Strage-Anmeldeinformationen und erhalten Sie eine JSON-Datei mit Ihren Anmeldeinformationen.
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]]."
Schritt 2 Geben Sie den Namen des Dienstkontos unter Neues Dienstkonto erstellen ein. 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". Dadurch wird die JSON-Datei heruntergeladen.
** Legen Sie die heruntergeladene JSON-Datei im Stammverzeichnis Ihres Django-Projekts ab. ** ** **
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 obige URL darauf zugreifen, wird der folgende Erstellungsbildschirm angezeigt. Erstellen Sie daher einen neuen Bucket.
Wenn Sie fertig sind, wird der folgende Bildschirm angezeigt.
Damit sind die Einstellungen in der Google Cloud Platform-Konsole abgeschlossen.
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'
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'),
)
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