django xadmin后台列表显示图片而不是url字符串

在这里插入图片描述

这就是本文章要实现的功能,django xadmin 后台显示图片,并且可以放大和关闭。

1.首先检查settings.py配置

必须包含下面两行,不一定要固定写medias,可以随心所欲为所欲为

MEDIA_URL = '/medias/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'medias')

然后在你的总路由文件中,默认是urls.py,过如下修改

# 导包
from django.conf.urls.static import static
.......
# 在最后加上,其中settings是settings.py导入数据
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
2.然后定义models的时候

正常image = models.ImageField()这一行都会写,重点是自定义的image_img函数,先导包format_html,这个包django自带

# 要导入format_html这个包
from django.utils.html import format_html

class ShareIcon(models.Model):
    SHARE_ICON = (
        (0, '分享图标'),
    )
    name = models.SmallIntegerField(choices=SHARE_ICON, unique=True, default=0, verbose_name="分享")
    image = models.ImageField(upload_to="shareicon", verbose_name='图标')

    def image_img(self):
    	# 这里添加一个防空判断
    	if not self.image:
    		return '无'
        return format_html(
            """<div οnclick='$(".my_set_image_img").hide();$(this).next().show();'><img src='{}' style='width:50px;height:50px;' >放大</div><div class='my_set_image_img' οnclick="$('.my_set_image_img').hide()" style="z-index:9999;position:fixed; left: 100px; top:100px;display:none;"><img src='{}' style='width:500px; height:500px;'></div>""",
            self.image.url, self.image.url)

    image_img.short_description = '图片'

    class Meta:
        db_table = 'share_icon'
        verbose_name = '分享图标'
        verbose_name_plural = verbose_name
3.我画个图简单说下注意事项(黄框的都是可以自由更改的)

在这里插入图片描述

4.在xadmin.py中就不需要在列表页显示image字段了,而是显示image_img字段

在这里插入图片描述
注册什么的就不说了

5.进入你的后台嗨皮吧
DjangoXAdmin后台管理系统中,显示图片通常涉及到文件上传处理。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. **前端模板**:在模板里,你可能需要引入一些HTMLCSS来渲染图片。这通常在`<img>`标签中完成,使用`{{ object.image.url }}`来引用图片URL。 注意,为了保证安全性,XAdmin默认不会直接展示大尺寸的图片,除非你手动调整了配置。如果你希望提供更大的图片预览,可以参考官方文档或者第三方插件来进行优化。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值