В Django, whitenoise не показывает статические файлы?

Я пытаюсь показать статические файлы debug=false.Я использую библиотеку whitenoise, но все равно сайт не показывает статические файлы и медиа файлы. Мой файл settings.py выглядит следующим образом:

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'whitenoise.middleware.WhiteNoiseMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
STATICFILES_STORAGE = 'whitenoise.storage.CompressedStaticFilesStorage'

STATIC_URL = '/static/'
STATIC_DIR = os.path.join(BASE_DIR, 'static')
STATICFILES_DIRS = [

    os.path.join(BASE_DIR, "static")
]


MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'


LOGIN_REDIRECT_URL = '/'
LOGOUT_REDIRECT_URL = '/'

собрали ли вы свою статическую папку

?
python manage.py collectstatic

и в ваших основных проектах urls.py

 url(r'^media/(?P<path>.*)$', serve,{'document_root': settings.MEDIA_ROOT}),
    url(r'^static/(?P<path>.*)$', serve,{'document_root': settings.STATIC_ROOT}),
]
if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL, document_root = settings.STATIC_ROOT)
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Для использования WhiteNoise с django :

  1. Убедитесь, что staticfiles настроены правильно

В проекте settings.py набор файлов

STATIC_ROOT = BASE_DIR / 'staticfiles' Эта папка staticfiles будет папкой, в которую collectstatic будут извлечены все ваши статические файлы.

  1. Включить белый шум. Всегда в settings.py:

    MIDDLEWARE = [

     'django.middleware.security.SecurityMiddleware',
    
     'whitenoise.middleware.WhiteNoiseMiddleware',
     # ...
    

    ]

NB : WhiteNoise middleware должен быть размещен непосредственно после Django SecurityMiddleware (если вы его используете) и перед всеми другими промежуточными программами.

Вот и все, но если вы хотите большей производительности, вам следует включить поддержку кэширования и сжатия следующим образом :

STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

Если вы хотите применить сжатие, но не хотите поведения кэширования, вы можете использовать:

STATICFILES_STORAGE = 'whitenoise.storage.CompressedStaticFilesStorage'

Выполните следующие шаги, и все будет в порядке. Документация по WhiteNoise

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