部署到Heroku的Django应用静态资源无法加载问题求助
Django Heroku 部署静态文件加载失败解决方案
以下是你配置中存在的问题及对应修改方案:
- ALLOWED_HOSTS未添加Heroku应用域名
当前配置仅包含本地访问地址,部署到Heroku后需要将应用域名加入可访问白名单,修改为:ALLOWED_HOSTS = ['0.0.0.0', 'localhost', '127.0.0.1', 'timon-webchat.herokuapp.com'] - WhiteNoise中间件配置位置错误
Django 3.1版本已废弃MIDDLEWARE_CLASSES配置项,放在该列表中的WhiteNoise不会生效,需要将WhiteNoise中间件移到MIDDLEWARE列表的第二位,紧跟SecurityMiddleware之后:
修改完成后可以删除整个无效的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', ]MIDDLEWARE_CLASSES配置段,避免后续配置混淆。 - 静态文件目录名疑似拼写错误
你配置的STATICFILES_DIRS指向asets/目录,如果实际存放静态资源的目录名为assets/,该拼写错误会导致收集静态文件时找不到资源,确认目录名后修改为对应名称即可。 - 静态文件收集验证
部署前可以先在本地运行python manage.py collectstatic,检查是否有报错,确认静态资源可以正常收集到staticfiles目录中。
额外说明:Heroku的文件系统是临时存储,你存放在本地media目录的用户上传内容会在应用重启、重新部署后丢失,生产环境建议使用第三方对象存储服务存放媒体文件。
内容的提问来源于stack exchange,提问作者Тимати Рогач
相关产品推荐
相关产品推荐

