当 Debug=False 时 Django Heroku 不提供静态文件
Posted
技术标签:
【中文标题】当 Debug=False 时 Django Heroku 不提供静态文件【英文标题】:Django Heroku not serving static files when Debug=False 【发布时间】:2019-06-01 06:32:55 【问题描述】:我在 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
时不提供。
【问题讨论】:
【参考方案1】:Whitenoise 中间件应该来自after the security middleware and before all other middleware。您目前正在将其添加到末尾。
【讨论】:
如果您尝试过,请更新您的原始问题以显示当前代码。确保您已提交并推送更改。【参考方案2】:从post 获得解决方案
将collectstatic
添加到Procfile
web: python manage.py collectstatic --no-input; gunicorn myapp.wsgi --log-file - --log-level debug
现在每个静态文件都在提供服务,包括 CSS、js、图像和视频。
【讨论】:
以上是关于当 Debug=False 时 Django Heroku 不提供静态文件的主要内容,如果未能解决你的问题,请参考以下文章
当 DEBUG=False 时,我的 Django 管理面板给出服务器错误(500)
为啥当 Debug 设置为 False 时,Django 会为静态媒体生成 HTTP 500 错误?
Django Elasticbeanstalk:当 Debug = False 时无法访问静态文件
当 Debug=False 时 Django Heroku 不提供静态文件