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
相关产品推荐
相关产品推荐

