Django项目无法正常显示上传的图片,如何排查相关配置问题?
Django本地调试无法显示已上传图片的排查方案
1. 检查项目根urls.py的静态媒体路由配置
DEBUG模式开启的情况下,需要手动在根urls.py中添加MEDIA资源的服务规则,代码示例如下:
from django.conf import settings from django.conf.urls.static import static urlpatterns = [ # 原有项目的路由配置保持不变 ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
这是该类问题最常见的诱因,DEBUG模式下Django默认不会处理MEDIA路径下的静态资源,必须添加上述配置才能正常访问。
2. 确认MEDIA_ROOT路径与实际存储路径匹配
你当前配置的MEDIA_ROOT = os.path.join(BASE_DIR, 'media'),需要确认BASE_DIR指向的路径是否是project/core目录:
- 如果你的
settings.py存放在project/core/路径下,默认的BASE_DIR = Path(__file__).resolve().parent.parent会指向project目录而非project/core,导致MEDIA_ROOT实际指向project/media,和你实际存储的project/core/media路径不匹配,自然找不到文件。 - 修正方案:如果确认图片要存在core目录下,修改MEDIA_ROOT为
os.path.join(BASE_DIR, 'core/media')即可,或者直接将media目录移动到BASE_DIR指向的根目录下。
3. 检查模板中图片链接的写法
模板中引用图片要使用对象.字段.url的方式,以你的Bill模型实例为例,正确写法是:
<img src="{{ bill.Bill_picture.url }}" alt="账单图片">
不要手动拼接路径,避免出现前缀错误。
4. 排查文件权限问题
确认运行Django服务的进程对media目录及其下的图片文件有读取权限,Linux/macOS环境下可以执行chmod -R 755 media给目录添加可读权限。
内容的提问来源于stack exchange,提问作者Ishav Gupta
相关产品推荐
相关产品推荐

