使用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
相关产品推荐
相关产品推荐

