Django Stati c Файлы не загружаются в Heroku, развертывание GCS - PullRequest
0 голосов
/ 23 апреля 2020

Итак, я создал приложение django и развернул его с помощью Heroku. Файлы Stati c (а также носители) обслуживаются корзиной GCS.

В настоящее время у меня возникает проблема при загрузке всех моих файлов stati c. Примечательно, что файлы png не загружаются, но все остальное есть. Запросы файла png возвращают ошибку 403, но остальные файлы (css, js, et c.) Загружаются нормально. Кроме того, изображения jpg, загруженные с носителя, возвращаются без ошибок.

Я должен предположить, что это проблема GCS, но я не совсем уверен в этом. Я перепробовал все, включая назначение разрешений моему сервисному агенту, создание другого сервисного агента и воссоздание другого сегмента с теми же данными.

У меня не было этой проблемы при использовании сегментов GCS с приложениями, запущенными на Google App Engine или GKE.

Любая точка в правильном направлении была бы отличной.

Это соответствующая часть моего файла настроек. Обратите внимание, что я специально поставил вызов django_heroku.settings(locals()) над этим блоком кода, поскольку он переопределяет эти настройки.

DEBUG = False

django_heroku.settings(locals())

DEFAULT_FILE_STORAGE = 'storages.backends.gcloud.GoogleCloudStorage'
STATICFILES_STORAGE = 'storages.backends.gcloud.GoogleCloudStorage'
GS_BUCKET_NAME = 'hello-world'
GCS_URL = 'https://storage.googleapis.com/'
STATIC_URL = '{}/{}/static/'.format(GCS_URL, GS_BUCKET_NAME)
MEDIA_URL = '{}/{}/media/'.format(GCS_URL, GS_BUCKET_NAME)
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')

UPLOAD_ROOT = 'media/uploads/'

1 Ответ

0 голосов
/ 23 апреля 2020

Я понял это. Отсутствующие файлы вызывались из файла CSS (фоновые изображения и т. Д. c). Так как они не вызывались с тегом {% static %}, соответствующие сигнатуры не были добавлены в вызов, и корзина видела несанкционированную попытку доступа к файлам.

Мое решение состояло в том, чтобы переместить эти вызовы встроенных файлов корзины, чтобы я мог использовать тег stati c.

...