Django Heroku не обслуживает статические файлы, когда Debug = False

Я размещаю свое приложение Django на Heroku и использую whitenoise для обработки статических файлов.

Ниже приводится содержание settings.py.

DEBUG = False

ALLOWED_HOSTS += [
    'example.com',
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'whitenoise.middleware.WhiteNoiseMiddleware',
    ...
]

STATIC_URL = '/static/'

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static_my_project')
]

STATIC_ROOT = os.path.join(BASE_DIR, 'static_cdn', 'static_root')

Но статические файлы не работают.

Параметр Debug=True обслуживает статические файлы, но не Debug=False.


person Anuj TBE    schedule 06.01.2019    source источник


Ответы (2)


Получил решение из сообщения

collectstatic добавлен в Procfile

web: python manage.py collectstatic --no-input; gunicorn myapp.wsgi --log-file - --log-level debug

И теперь обслуживаются все статические файлы, включая CSS, js, изображения и видео.

person Anuj TBE    schedule 06.01.2019
comment
Спас мою жизнь.. - person Isura Manchanayake; 30.12.2020

Промежуточное программное обеспечение Whitenoise должно быть после промежуточного программного обеспечения безопасности и до всех остальных промежуточных программ. Сейчас вы добавляете его в конец.

person Alasdair    schedule 06.01.2019
comment
Если вы пробовали это сделать, обновите исходный вопрос, чтобы отобразить текущий код. Убедитесь, что вы зафиксировали и отправили изменения. - person Alasdair; 06.01.2019