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

使用Pillow上传图片失败:Django Admin上传图片显示为空

解决Django Admin上传图片后显示为空的问题

我来帮你一步步排查这个常见的图片显示问题,大概率是几个关键环节没配置到位:

1. 模板里的图片URL写法错误

你当前HTML中的src="{crimes.images}"是无效的写法——Django的ImageField字段需要通过.url属性来生成可访问的完整路径,而且模板变量必须用双大括号包裹。修改后的代码应该是:

<div class="row featurette">
  <div class="col-md-3 ">
    <img class="featurette-image img-fluid mx-auto" data-src="holder.js/500x500/auto" 
         src="{{ crimes.images.url }}" alt="Generic placeholder image" width="200" height="200">

2. 开发环境未配置媒体文件路由

哪怕你已经设置了MEDIA_URL和MEDIA_ROOT,Django在开发阶段不会自动处理媒体文件的HTTP请求,必须在项目的urls.py里添加路由配置:

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    # 这里是你已有的其他路由,比如path('admin/', admin.site.urls)等
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

这段代码的作用是告诉Django:当请求MEDIA_URL开头的路径时,去MEDIA_ROOT目录里找对应的文件。

3. 检查模型字段与依赖库

首先确认你的模型用的是ImageField(不是普通的FileField),并且已经安装了处理图片必需的Pillow库:

from django.db import models

class Crime(models.Model):
    # 其他字段...
    images = models.ImageField(upload_to='crimes/')  # upload_to可自定义图片存储的子目录

如果没装Pillow,先运行安装命令:

pip install pillow

4. 验证图片是否真的上传成功

去项目根目录下的media/文件夹里看看,有没有对应上传的图片文件。如果文件不存在,可能是media目录没有写权限,或者模型字段配置有误,导致上传过程失败。

按这几步排查下来,应该就能解决图片显示为空的问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:46:18