当 Debug=False 时 Django Heroku 不提供静态文件
Django Heroku not serving static files when Debug=False
我在 Heroku 上托管我的 Django 应用程序并使用 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
时不提供。
Whitenoise 中间件应该会出现 after the security middleware and before all other middleware。您目前正在将其添加到末尾。
从 post
得到了解决方案
已将 collectstatic
添加到 Procfile
web: python manage.py collectstatic --no-input; gunicorn myapp.wsgi --log-file - --log-level debug
现在每个静态文件都在服务,包括 CSS、js、图像和视频。
我在 Heroku 上托管我的 Django 应用程序并使用 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
时不提供。
Whitenoise 中间件应该会出现 after the security middleware and before all other middleware。您目前正在将其添加到末尾。
从 post
得到了解决方案已将 collectstatic
添加到 Procfile
web: python manage.py collectstatic --no-input; gunicorn myapp.wsgi --log-file - --log-level debug
现在每个静态文件都在服务,包括 CSS、js、图像和视频。