Статические файлы Django Не загружаются в Digital Ocean Spaces, несмотря на правильную конфигурацию [дубликат]

У меня возникли проблемы с тем, что статические файлы Django не загружаются в Digital Ocean Spaces (хранилище, совместимое с S3) в процессе работы, так как я обновился с 4.2 до Django 5.2. В рамках этого обновления я также обновил python, boto3 и django-хранилища.

Команда collectstatic, похоже, успешно выполняется локально, но файлы в корзине Spaces не обновляются. Кроме того, некоторые статические файлы (в частности, CSS) загружаются вместо того, чтобы отображаться в браузере.

Текущая настройка

  • Django 5.2
  • Цифровые океанские пространства (S3-совместимое хранилище)
  • Пользовательский сервер хранения данных с использованием django-storages
  • Рабочей среды (DEBUG=False)
  • Вот мой Cpp-файл с использованием pipenv для зависимостей
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[packages]
django = "==5.2"
pillow = "*"
python-dotenv = "*"
stripe = "*"
mailchimp-marketing = "*"
dotenv = "*"
gunicorn = "*"
psycopg2 = "*"
django-storages = "==1.14.2"
boto3 = "==1.34.69"
weasyprint = "*"

[dev-packages]

[requires]
python_version = "3.12"

Конфигурация

# settings.py (production settings)
AWS_ACCESS_KEY_ID = os.getenv('AWS_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY = os.getenv('AWS_SECRET_ACCESS_KEY')
AWS_STORAGE_BUCKET_NAME = 'equine-pro'
AWS_S3_ENDPOINT_URL = 'https://ams3.digitaloceanspaces.com'
AWS_S3_OBJECT_PARAMETERS = {
    'CacheControl': 'max-age=86400',
    'ACL': 'public-read'
}
AWS_DEFAULT_ACL = 'public-read'
AWS_LOCATION = 'static'
AWS_S3_CUSTOM_DOMAIN = 'equine-pro.ams3.cdn.digitaloceanspaces.com'
AWS_S3_REGION_NAME = 'ams3'
AWS_S3_FILE_OVERWRITE = True
AWS_QUERYSTRING_AUTH = False
AWS_S3_VERIFY = True
AWS_S3_SIGNATURE_VERSION = 's3v4'
AWS_S3_ADDRESSING_STYLE = 'virtual'

STATICFILES_STORAGE = 'equineproclinic.storage_backends.StaticStorage'

Пользовательский сервер хранения данных

# storage_backends.py
from storages.backends.s3boto3 import S3Boto3Storage
import logging

logger = logging.getLogger(__name__)

class StaticStorage(S3Boto3Storage):
    location = 'static'
    default_acl = 'public-read'
    
    def _save(self, name, content):
        logger.info(f"Attempting to save {name}")
        try:
            # Set content type based on file extension
            content_type = self._get_content_type(name)
            params = {
                'ACL': self.default_acl,
                'CacheControl': 'max-age=86400',
                'ContentType': content_type
            }
            return super()._save(name, content, extra_args=params)
        except Exception as e:
            logger.error(f"Error saving {name}: {str(e)}")
            raise

Дополнительный контекст

  • Приложение развернуто на платформе Digital Ocean App Platform
  • Статические файлы предоставляются через CDN
  • Подтверждено наличие и корректность всех учетных данных AWS
  • Серверная часть хранилища может быть успешно инициализирована (проверено с помощью пользовательской команды управления)

Мы были бы очень признательны за любую помощь или рекомендации!

Что я пробовал

  1. Подтвержденные учетные данные AWS правильно заданы в переменных среды Digital Oceans
  2. Обновлены настройки CORS в Digital Ocean Spaces, чтобы разрешить использование методов GET, PUT, POST, DELETE и HEAD
  3. Создана пользовательская команда управления для проверки конфигурации хранилища
  4. Добавлено расширенное ведение журнала для отслеживания процесса загрузки
  5. Очистил каталог статических файлов и запустил collectstatic с флагом --clear

Текущее поведение

  1. collectstatic команда выполняется без ошибок
  2. Файлы копируются локально, но не загружаются в Spaces
  3. Во время процесса не регистрируется никаких ошибок
  4. Существующие файлы в корзине Spaces не обновляются
  5. Некоторые статические файлы (CSS) загружаются, а не отображаются
Вернуться на верх