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

Django数据库存储图片无法在页面显示(无运行报错)

解决Django图片存储后无法在网页显示的问题

问题诊断

从代码来看,图片无法显示主要源于以下4个问题:

  • MEDIA_ROOT配置格式错误
  • 媒体URL与实际存储路径不匹配
  • 模板变量拼写与视图传递的变量不一致
  • Bootstrap图片类名使用错误

修复步骤

1. 修正settings.py媒体配置

将MEDIA_ROOT改为Path对象,同时对齐MEDIA_URL与存储路径:

# settings.py
MEDIA_URL = "/uploads/"
MEDIA_ROOT = BASE_DIR / "uploads"

2. 修正模板变量拼写与图片类名

修改模板中的循环变量名(与视图传递的catagory保持一致),并修正Bootstrap图片类名:

<!-- 模板代码片段 -->
{% for item in catagory %}
<div class="col-md-4 col-lg-3">
    <div class="card my-3">
        <img src="{{item.image.url}}" class="card-img-top" alt="Categories">
        <div class="card-body">
            <h5 class="card-title text-primary">{{item.name}}</h5>
            <p class="card-text">{{ item.description }}</p>
            <a href="" class="btn btn-primary btn-sm">View Details</a>
        </div>
    </div>
</div>
{% endfor %}

3. 验证媒体文件路由(无需修改,确认即可)

根urls.py中的静态文件路由配置正确,确保开发环境下能正确访问媒体文件:

# 根urls.py
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    path("admin/", admin.site.urls),
    path('',include("shop.urls")),
]

if settings.DEBUG:
    urlpatterns+=static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)

4. 确认图片存储路径

模型中upload_to设置为uploads/,与修改后的MEDIA_ROOT一致,上传的图片会保存在项目根目录的uploads文件夹中,可手动检查文件是否存在。


测试流程

  1. 重启Django开发服务器
  2. 通过后台重新上传一张Category测试图片
  3. 访问collections页面,确认图片正常显示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 15:55:19