Django后台列表显示图片

本文介绍了如何在Django模型中使用ImageField存储图片,并在编辑页面上显示图片预览。通过`image_data`方法处理显示静态和媒体文件,同时在admin界面集成`readonly_field`以实现图片的只读预览。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在列表中显示ImageField的图片预览

编辑应用的models.py,添加下面代码:

class Product(models.Model):
    # ...
    image = models.ImageField(upload_to='products/%Y/%m/%d', blank=True)
 

def image_data(self):
        if self.image:
            return format_html(
                '<img src="/media/{}" width="100px" >',
                self.image,
            )
        else:
            return format_html(
                '<img src="/static/shop/no_image.png" width="100px" >'
            )

如果图片无法正常显示,请检查关于media和static相关配置

项目setting.py

STATIC_URL = "static/"
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')

项目urls.py

urlpatterns = [
    #...
]

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

在编辑页面预览图片

使用readonly_field添加image_data字段

@admin.register(Product)
class ProductAdmin(admin.ModelAdmin):
    list_display = ['name','slug','price','available','created','updated','image_data']
    list_filter = ['available','created','updated']
    list_editable = ['price','available']
    prepopulated_fields = {'slug':('name',)}

    readonly_fields = ('image_data',)

关于shop应用更多信息,请查看

Django初创shop应用-优快云博客

Django使用session管理购物车-优快云博客

Django创建订单-优快云博客

Django的XAdmin后台管理系统中,显示图片通常涉及到文件上传和处理。XAdmin本身并不直接处理图片展示,但你可以通过以下几个步骤来实现在后台管理界面显示图片: 1. **模型设计**:确保你的模型字段用于存储图片的URL或文件路径。例如,可以使用`django.db.models.ImageField`(对于图像文件)或`CharField`(保存图片URL)。 ```python from django.db import models class MyModel(models.Model): image = models.ImageField(upload_to='uploads/', blank=True, null=True) # 或者 image_url = models.CharField(max_length=255, blank=True, null=True) ``` 2. **模型元类**:在ModelAdmin中,你需要指定处理图片的Meta类,如`list_display`来显示图片预览图。 ```python from xadmin.sites import site from xadmin.plugins.image import ImageWidget class MyModelAdmin(xadmin.ModelAdmin): list_display = ['id', 'image'] formfield_overrides = { models.ImageField: {'widget': ImageWidget} } site.register(MyModel, MyModelAdmin) ``` 这里,`ImageWidget`允许你在列表视图中显示图片缩略图。 3. **图片显示**:用户上传图片后,XAdmin会在后台生成一个URL链接,点击即可看到完整的图片。如果存储的是文件路径,需要在前端模板中展示图片。 4. **前端模板**:在模板里,你可能需要引入一些HTML和CSS来渲染图片。这通常在`<img>`标签中完成,使用`{{ object.image.url }}`来引用图片URL。 注意,为了保证安全性,XAdmin默认不会直接展示大尺寸的图片,除非你手动调整了配置。如果你希望提供更大的图片预览,可以参考官方文档或者第三方插件来进行优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值