Django应用无法加载用户上传图片返回404错误该如何解决?
解决步骤
你遇到的404问题是因为Django开发模式默认没有提供媒体文件的访问路由,再补全以下配置即可修复:
- 第一步:补全项目根路由配置
打开项目根目录下的urls.py(注意不是应用内的urls文件),添加以下内容:
from django.conf import settings from django.conf.urls.static import static # 原有urlpatterns配置保持不变 urlpatterns = [ # 你原有写的所有路由规则 ] # 新增这一行,开发环境下提供媒体文件访问服务 urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
- 第二步:优化模板内图片路径写法
不需要手动拼接{% get_media_prefix %}和图片对象,Django的ImageField自带url属性,会自动生成正确的完整访问路径,修改img标签即可:
<!-- 注意要在模板顶部先加{% load static %},如果之前没加的话 --> <div id="profile"> <img id="userPhoto" src="{{ profile_pic.url }}" alt="{{ profile_pic_title }}"> </div>
- 第三步:确认基础配置(可选检查项)
确认settings.py的INSTALLED_APPS列表中包含django.contrib.staticfiles,这是Django处理静态、媒体文件的内置依赖,默认创建的项目都会自带,如果你手动删除过需要补加回来。
生产环境注意
上面的路由配置仅在DEBUG=True的开发环境生效,正式上线部署时需要配置Nginx、Apache等Web服务器直接处理/media/路径的请求,不要交给Django处理,性能和安全性都更高。
内容的提问来源于stack exchange,提问作者cr_untilted
相关产品推荐
相关产品推荐

