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

求助:如何在Django Admin中正确显示图片?

Django Admin图片显示异常的解决方法

问题1:图片路径硬编码错误

你的image_tag方法里硬编码了/users/media/路径,这和配置的MEDIA_URL(/media/)不符,而且self.user_image.url已经包含了正确的媒体文件路径,直接使用即可:

修改models.py中的image_tag方法:

def image_tag(self):
    return mark_safe(f'<img src="{self.user_image.url}" width="50" height="50" />')

问题2:上传路径的月份格式错误

image_path函数里用了%M(代表分钟)来格式化月份,正确的月份格式应该是%m(两位数字月份),这会导致图片实际存储路径和预期不符,无法被找到:

修改image_path中的格式化参数:

return 'profile_pic/{year}-{month}-{imageid}-{basename}-{randomstring}{ext}'.format(
    imageid=instance, basename=basefilename, randomstring=randomstr, ext=file_extension,
    year=_now.strftime('%Y'), month=_now.strftime('%m'), day=_now.strftime('%d'))

问题3:Django Admin未配置显示图片字段

你需要在admin.py中注册User模型,并将image_tag添加到显示字段中,否则Admin界面不会渲染这个图片标签:

创建/修改users/admin.py:

from django.contrib import admin
from .models import User

@admin.register(User)
class UserAdmin(admin.ModelAdmin):
    # 在列表页显示图片标签
    list_display = ('user_email', 'user_fname', 'user_lname', 'image_tag')
    # 在详情页显示图片标签(设为只读避免编辑)
    readonly_fields = ('image_tag',)

问题4:默认图片路径检查

你的user_image字段默认值是profile_pic/image.jpg,请确保这个文件存在于MEDIA_ROOT/profile_pic/目录下(即项目根目录的media/profile_pic/image.jpg),否则默认图片会显示异常。

问题5:确保开发环境DEBUG模式开启

static()方法仅在DEBUG=True时生效,检查settings.py中的配置:

DEBUG = True

完成以上修改后,重启Django开发服务器,重新上传图片即可在Admin界面正常显示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 13:27:03