当Debug = False时,Django Heroku不提供静态文件

时间:2019-01-06 09:04:36

标签: django heroku whitenoise

我将 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则不提供。

2 个答案:

答案 0 :(得分:1)

Whitenoise中间件应该是after the security middleware and before all other middleware。您当前正在将其添加到末尾。

答案 1 :(得分:0)

post那里获得解决方案

collectstatic添加到 Procfile

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

现在,每个静态文件都在提供,包括CSS,js,图像和视频。