• Django测试开发-36- xadmin模板中缩略图django-stdimage


    django通过自带的ImageField可以实现图片上传,如果想在列表页面也显示图片缩略图的话,可以用django-stdimage插件来实现

    一、django-stdimage介绍

    1.作用

    # django-stdimage的github文档地址https://github.com/codingjoe/django-stdimage
    # 
    # 实现以下功能的Django Field:
    # 
    # Django-Storages兼容(S3)
    # 将图像调整为不同大小
    # 访问模型级别的缩略图,不需要模板标签
    # 保留原始图像
    # 异步渲染
    # 多线程和处理以获得最佳性能
    # 限制接受的图像尺寸
    # 使用可调用的upload_to(将文件重命名为标准化名称)
    
    

    2.安装

    pip3 install django-stdimage

    二、项目中的配置

    1.settings.py

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

    2.models.py

    
    
    from datetime import datetime
    from stdimage.models import StdImageField
    class UploadImage(models.Model):
        """
        上传图片功能
        """
        name = models.CharField(max_length=30,verbose_name="标题",default="")
    
        image = StdImageField(max_length=100,
                              upload_to='path/to',
                              verbose_name=u"图片和列表缩略图",
                              variations={'thumbnail':{'width':100,'height':200}}
                              )
    
        add_time = models.DateTimeField(default=datetime.now,verbose_name="添加时间")
    
        def url(self):
    
            if self.image:
                return self.image.url
            else:
                return "url为空"
    
        def image_img(self):
    
            if self.image:
                # 点击后放大图片
                href = self.image.url
                # 页面显示缩略图
                src = self.image.thumbnail.url
    
                # 插入html代码
                image_html = '<a href="%s" target="_blank" title="图片和列表缩略图"><img alt="" src="%s"/>'%(href, src)
                return image_html
    
            else:
                return '上传图片'
    
        image_img.short_description = '图片'
        # 列表页显示图片
        image_img.allow_tags = True
    
        class Meta:
            verbose_name = "图片和列表缩略图"
            verbose_name_plural = verbose_name
    
        def __str__(self):
    
            return self.name

    3.adminx.py

    class ControlImage(object):
    
        # 显示不要用image,而应该用image_img
        list_display = ['name', 'image_img', 'url', 'add_time']
    
    xadmin.site.register(UploadImage, ControlImage)

    浏览器展示:

  • 相关阅读:
    redis 操作
    Xcode 改时间问题 lua代码没反应问题
    apk 反编译
    mysql远程连接命令
    python 利用三方的xlrd模块读取excel文件,处理合并单元格
    eclipse 新建项目不可选择Java Project 解决方法
    eclipse左边的工程列表窗口不见了解决方案
    python_pycham,连接数据库,执行sql
    Eclipse修改默认的语言编码设置,处理乱码
    httprunner中的分层(api、testcase、testsuite)及实际使用
  • 原文地址:https://www.cnblogs.com/chushujin/p/12626634.html
Copyright © 2020-2023  润新知