Как обслуживать статические файлы для django-cms на DigitalOcean?

Я развернул приложение django-cms на DigitalOcean, следуя шагам в этом руководстве:

https://www.digitalocean.com/community/tutorials/how-to-deploy-django-to-app-platform

Приложение работает, но статические файлы не обслуживаются.

Я создал дополнительный статический сайт, ссылающийся на тот же репозиторий GitHub, и он тоже работает.

settings.py

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, "staticfiles")

STATICFILES_DIRS = [
    BASE_DIR / "project_name" / "static",
]

Я собрал статические файлы с помощью python manage.py collectstatic, и папка и файлы находятся в нужном месте.

Как мне "подключить" приложение на DigitalOcean к моим статическим файлам?

Убедитесь, что вы добавили два отдельных сервиса в DigitalOcean. Один сервис должен использоваться для обслуживания HTTP-запросов по корневому URL / с помощью Python. Другой сервис должен использоваться для обслуживания URL /static из каталога staticfiles в качестве выходного каталога.

Решение с помощью Whitenoise:

https://whitenoise.readthedocs.io/en/stable/django.html

Change settings.py

INSTALLED_APPS = [
    ...
    'whitenoise.runserver_nostatic', # Above 'django.contrib.staticfiles'
    'django.contrib.staticfiles',
    'django.contrib.sites',
     ...
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'whitenoise.middleware.WhiteNoiseMiddleware', # Here
    'django.contrib.sessions.middleware.SessionMiddleware',
    ...
]

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, "staticfiles")

STATICFILES_DIRS = [
    BASE_DIR / "project_name" / "static",
]

# Whitenoise
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

и запустите python manage.py collectstatic на сервере.

Это может и не решение вопроса, но работает как шарманка!

Вернуться на верх