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

Django中media子文件夹图片后台可访问但模板无法加载求助

解决Django模板中无法加载Media文件夹图片的问题

嘿,我一眼就发现了核心问题——你的模板里存在变量名拼写错误,这直接导致了image.url返回None。让我一步步帮你解决:

1. 修复模板中的变量名错误

你在模板里的循环定义是:

{% for eachtshirt in alltshirts %}

但后面引用图片的时候却写成了eachshirt.image.url——这里少了一个t!正确的变量名应该是eachtshirt.image.url。

修正后的模板代码如下:

<div class='tshirts'>
  {% for eachtshirt in alltshirts %}
  <div class='tshirt'>
    <a href="#">{{eachtshirt.brand}}</a>
    <p>{{eachtshirt.name}}</p>
    <p>{{eachtshirt.price}}</p>
    <img src="{{eachtshirt.image.url}}"/>
    {% if eachtshirt.image.url == None %}
    <p>{{"Image Not Found"}}</p>
    {% endif %}
  </div>
  {% endfor %}
</div>

2. 额外的验证(如果修复后仍有问题)

既然你能直接访问http://127.0.0.1:8000/media/tshirts/t-shirt2.jpg看到图片,说明你的MEDIA配置和文件存储是正常的。如果修复拼写后还是有问题,可以检查这几点:

  • 推荐使用更明确的MEDIA_ROOT配置:
    MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
    
    用os.path.join可以避免不同操作系统的路径分隔符问题。
  • 确认后台的tshirts对象确实上传了图片:有时候上传过程中可能出现静默失败,导致image字段为空,去Django admin里检查一下对应的记录。
  • 开发环境下urls.py的配置你已经做对了,生产环境记得用Web服务器(比如Nginx)来托管静态文件,不要依赖Django的static函数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:11:59