You need to enable JavaScript to run this app. Django模型关联图片无法显示 访问media路径返回404求助
优惠活动
大模型
产品
解决方案
定价
更多

Django模型关联图片无法显示 访问media路径返回404求助

Django 媒体文件访问404问题排查

  • 补充开发环境下的media访问路由
    你已经在settings中正确配置了MEDIA_ROOT和MEDIA_URL,但Django开发服务器默认不会主动处理media路径的文件请求,必须在项目主路由文件(即ROOT_URLCONF指向的testimage/urls.py)中手动挂载media路由,核心配置代码如下:

    from django.contrib import admin
    from django.urls import path
    from django.conf import settings
    from django.conf.urls.static import static
    # 导入自定义视图
    from home.views import index
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('', index, name='home'),
    ]
    
    # 仅DEBUG开启时生效,用于本地开发时正常访问media文件
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    
  • 验证django_heroku配置对本地路径的影响
    你的settings文件末尾调用了django_heroku.settings(locals()),该方法会自动覆写项目的静态、媒体路径配置,适配Heroku线上环境的存储规则。本地开发运行时,它很容易把原本正确的本地MEDIA_ROOT路径修改为适配线上的路径,导致实际存储文件的位置和Django查找文件的位置不匹配。可以临时注释掉这行配置,重启本地服务测试图片是否能正常加载。

  • 核对实际文件存储位置
    手动打开你配置的MEDIA_ROOT对应的项目根目录下的media文件夹,检查报错日志中提到的两个jpg文件是否真的存在于该目录下。如果数据库记录的文件路径有效,但实际文件没有存放到对应的media目录中,也会触发404错误。

  • 优化模板渲染逻辑避免无效请求
    你在模板中直接遍历图片记录并取i.photo.url渲染,如果存在photo字段为空的记录,会生成无效的请求路径。可以增加判断逻辑减少异常请求:

    {% for i in images %}
      {% if i.photo %}
        <img src="{{ i.photo.url }}" alt="{{ i.title }}">
      {% endif %}
    {% endfor %}
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.03 09:45:04