You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django项目部署到Heroku后访问报500、图片无法加载问题求助

问题根因

报错ValueError: Missing staticfiles manifest entry for 'staticfiles/project1.png'说明Django的静态文件存储后端在manifest清单里找不到你引用的文件,本质是静态文件引用路径、配置冲突导致的,按以下步骤修改即可:

修复步骤

1. 修正模板中的静态资源引用

你当前引用路径错误,手动加了staticfiles前缀,这是STATIC_ROOT的存储目录名,不应该写在引用路径里:

  • 所有静态资源必须用Django内置的{% static %}模板标签引用
  • 路径仅需要写对应app下static目录的相对路径,比如你的图片存放在projects/static/img/project1.png,引用方式为{% static 'img/project1.png' %}

2. 修正settings.py配置

你当前的配置缺少必填项,还有冗余问题:

  • 补上缺失的STATIC_URL配置,放在STATIC_ROOT配置前即可:
    STATIC_URL = '/static/'
    
  • 修改ALLOWED_HOSTS配置,关闭DEBUG模式时必须配置允许访问的域名,可临时写成ALLOWED_HOSTS = ['.herokuapp.com']匹配所有Heroku域名
  • 可选:如果存在全局静态文件(存放在项目根目录的static文件夹下),补上STATICFILES_DIRS配置:
    STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
    

3. 修正wsgi.py的冗余配置

你已经在settings.py的MIDDLEWARE里加入了WhiteNoise中间件,且django_heroku会自动处理静态文件路由,不需要再手动在wsgi里包裹application,直接删除以下两行即可:

from whitenoise import WhiteNoise
application = WhiteNoise(application)

4. 本地验证后重新部署

修改完成后本地先执行python manage.py collectstatic,执行后检查staticfiles目录下是否存在你项目的img目录和对应图片,确认没有问题后再推送到Heroku重新部署,部署时可查看Heroku日志确认collectstatic执行成功。


内容的提问来源于stack exchange,提问作者Lemoncake123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 04:45:04