django admin后台列表页、修改/详情页图片预览功能

news2024/12/25 10:04:07

目录

一、admin后台列表页的图片预览功能

二、admin后台修改/详情页图片预览功能

1,添加html前端代码

2、在admin.py文件中添加以下代码:


1.列表页图片问题:在admin列表页中,直接在list_display中填写图片字段时在列表页展示的并不是一张图片,而是图片链接,无法真实预览查看图片:

 列表页修改后的预览图片功能:

 

2.修改/详情页图片问题:在admin后台中,默认查看上传的图片只是一个路径地址,没有图片预览,很不方便,所以需要在这个页面下显示上传图片的预览。

 上传的多张图片预览:

一、admin后台列表页的图片预览功能

只需要在admin.py中继承admin.ModelAdmin的类中自定义写一个方法即可,再将方法名填入到list_display中

class QrCodeAdmin(admin.ModelAdmin):

    list_display = ('get_image', 'create_time')


    def get_image(self, obj):
        return format_html('<img src="{}" width="15%" height="15%" />'.format(obj.img.url))

最后将admin注册一下,即可在列表页查看到预览的图片。

二、admin后台修改/详情页图片预览功能

1,添加html前端代码

在项目下新建templates/admin/change_form.html文件,添加以下内容:

{% extends "admin/change_form.html" %}

{% block extrahead %}
    {{ block.super }}
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
{% endblock %}

{% block field_sets %}
    {{ block.super }}
    <fieldset>
        <legend></legend>
        {% if image_preview_url %}
            <img id="image-preview" src="{{ image_preview_url }}" alt="预览" width="16%" />
        {% endif %}
        {% if image_preview_url2 %}
            <img id="image-preview2" src="{{ image_preview_url2 }}" alt="预览" width="16%" />
        {% endif %}
        {% if image_preview_url3 %}
            <img id="image-preview3" src="{{ image_preview_url3 }}" alt="预览" width="16%" />
        {% endif %} 
        {% if image_preview_url4 %}
            <img id="image-preview4" src="{{ image_preview_url4 }}" alt="预览" width="16%" />
        {% endif %}
        {% if image_preview_url5 %}
            <img id="image-preview5" src="{{ image_preview_url5 }}" alt="预览" width="16%" />
        {% endif %}
        {% if image_preview_url6 %}
            <img id="image-preview6" src="{{ image_preview_url6 }}" alt="预览" width="16%" />
        {% endif %}

        <br>

        {% if image_preview_url7 %}
            <img id="image-preview7" src="{{ image_preview_url7 }}" alt="预览" width="16%" />
        {% endif %}
        {% if image_preview_url8 %}
            <img id="image-preview8" src="{{ image_preview_url8 }}" alt="预览" width="16%" />
        {% endif %}
        {% if image_preview_url9 %}
            <img id="image-preview9" src="{{ image_preview_url9 }}" alt="预览" width="16%" />
        {% endif %}
        {% if image_preview_url10 %}
            <img id="image-preview10" src="{{ image_preview_url10 }}" alt="预览" width="16%" />
        {% endif %}
        {% if image_preview_url11 %}
            <img id="image-preview11" src="{{ image_preview_url11 }}" alt="预览" width="16%" />
        {% endif %}
        {% if image_preview_url12 %}
            <img id="image-preview12" src="{{ image_preview_url12 }}" alt="预览" width="16%" />
        {% endif %}

    </fieldset>
{% endblock %}

{% block extrajs %}
    {{ block.super }}
    <script>
        $(document).ready(function() {
            // 监听图片文件选择事件
            $('input[name="image"]').change(function() {
                var reader = new FileReader();
                reader.onload = function(e) {
                    $('#image-preview').attr('src', e.target.result);
                }
                reader.readAsDataURL(this.files[0]);
            });
        });
    </script>
{% endblock %}

 以上有类似12个img标签的代码,最多能展示12张上传的图片预览

{% if image_preview_url %}
    <img id="image-preview" src="{{ image_preview_url }}" alt="预览" width="16%" />
{% endif %}

2、在admin.py文件中添加以下代码:

# admin后台详情页/修改页图片预览功能
    change_form_template = 'admin/change_form.html'

    def change_view(self, request, object_id, form_url='', extra_context=None):
        extra_context = extra_context or {}
        obj = self.get_object(request, object_id)
        # 多张图片处理,渲染到图片预览显示
        imgs = obj.imgs.all()
        show_img_list = [img.show_img.url for img in imgs]  # 展示图
        detail_img_list = [img.detail_img.url for img in imgs]  # 详情图
        for index, url in enumerate(show_img_list):
            if index == 0:
                extra_context['image_preview_url'] = show_img_list[index]
            else:
                extra_context['image_preview_url' + str(index + 1)] = show_img_list[index]

        for index, url in enumerate(detail_img_list):
            extra_context['image_preview_url' + str(index + 7)] = detail_img_list[index]

        return super().change_view(request, object_id, form_url, extra_context=extra_context)

extra_context['image_preview_url'] 就是图片的链接地址,用于change_form.html文件里if的判断是否有这个链接,有就展示img的标签显示图片预览。

最后将admin注册,即可在admin后台里看到上传的图片有预览功能了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/567022.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

YOLOv5从训练到移植

一、图像采集和标注 图像采集 覆盖所有的数据目标&#xff0c;不同场景&#xff08;视角、光照、可能的干扰&#xff09;、距离、运动、背景等&#xff0c;用深度和广度摄像头都行。 若兼顾效率和准确率&#xff0c;可以用迁移学习思路训练&#xff0c;则不同场景下采集的图…

系统方面对文件的打开,读写,关闭

系统方面对文件的操作 1. 系统方面打开文件的函数2. 系统方面对文件的写入3. 系统方面对文件的读取4. 关闭文件close 1. 系统方面打开文件的函数 open函数得到一个指定文件的文件描述符&#xff0c;如果出现错误则返回-1。open函数需要传入一个文件路径和操作模式&#xff0c;…

高德地图AMap.MouseTool插件多次测距不能清除bug

AMap.MouseTool插件是一个很有用的插件&#xff0c;可以在地图上画折线测量距离&#xff0c;也可以在地图上画区域测量面积&#xff0c;这些在客户的一些高级需求里经常出现&#xff0c;最近使用出现了bug&#xff0c;此bug在官网的示例里也能重现 官网demo上重现步骤如下图&a…

剑指 Offer 58 - I. 翻转单词顺序

剑指 Offer 58 - I. 翻转单词顺序 题目&#xff1a; 输入一个英文句子&#xff0c;翻转句子中单词的顺序&#xff0c;但单词内字符的顺序不变。为简单起见&#xff0c;标点符号和普通字母一样处理。例如输入字符串"I am a student. “&#xff0c;则输出"student. a …

Spring Tool Suite(STS)初始化配置记录

目录 1.前言 2.STS安装 3.STS配置 3.1.SpringToolSuite4.ini 3.2、配置maven 3.3.配置jdk 3.4.全局编码设置 3.5.字体配置 3.6.设置自动提示 4. Spring插件 4.1.MyBatipse--mybatis插件 4.2.Spark Builder Generator 4.3.Properties Editor 4.4.Checkstyle 4.5.…

【MySQL】数据库的基本操作

&#x1f3e0; 大家好&#xff0c;我是 兔7 &#xff0c;一位努力学习C的博主~&#x1f4ac; &#x1f351; 如果文章知识点有错误的地方&#xff0c;请指正&#xff01;和大家一起学习&#xff0c;一起进步&#x1f440; &#x1f680; 如有不懂&#xff0c;可以随时向我提问&…

Smoothieware_best-for-pnp 工程文件编译选项含义整理

文章目录 Smoothieware_best-for-pnp 工程文件编译选项含义整理概述arm-none-eabi-gcc 的编译选项含义整理 - S(汇编)文件arm-none-eabi-gcc 的编译选项含义整理 - C文件arm-none-eabi-gcc 的编译选项含义整理 - CPP文件库的打包arm-none-eabi-gcc 的编译选项含义整理 - C文件 …

Python入门教程+项目实战-12.3节-使用字典进行格式化

目录 12.3.1 字符串的格式化 12.3.2 使用字典进行格式化 12.3.3 格式化操作方法的优缺点 12.3.4 知识要点 12.3.5 系统学习python 12.3.1 字符串的格式化 在9.4节介绍了字符串的格式化&#xff0c;我们先来回顾下字符串格式化的定义&#xff0c;以及主要的格式化方法&…

万字长文详述ClickHouse在京喜达实时数据的探索与实践 | 京东云技术团队

1 前言 京喜达技术部在社区团购场景下采用JDQFlinkElasticsearch架构来打造实时数据报表。随着业务的发展 Elasticsearch开始暴露出一些弊端&#xff0c;不适合大批量的数据查询&#xff0c;高频次深度分页导出导致ES宕机、不能精确去重统计&#xff0c;多个字段聚合计算时性能…

从零开始的python教程:全面又好用的学习资料

Hi&#xff0c;大家好&#xff0c;我是蛋糕 最近因为接连带过一些训练营和成长营&#xff0c;也是可以与各位小伙伴进行更多的讨论&#xff0c;发现各位小伙伴最近也是迫切的想要学习一些新的技能&#xff0c;其中呼声最高的可能就是Python了&#xff0c;当然理由也是很多啦&a…

LeetCode 84 柱状图中最大的矩形

题目&#xff1a; 给定n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。 示例 1: 输入&#xff1a;heights [2,1,5,6,2,3] 输出&#xff1a;10 解释&#xf…

职工人事管理系统_项目整合以及salary模块逻辑整理

项目&#xff1a; groupId 在所有项目中唯一标识您的项目。artifactId 是没有版本的 jar 的名称。Maven 中groupId 和artifactId 的主要区别在于&#xff0c;groupId 指定项目组的id&#xff0c;而artifactId 指定项目的id 配置完环境&#xff0c;如何测试自己的依赖安装完毕…

TDengine 成功“晋级” Percona Live 2023 银牌赞助商,开发者驻足关注

带着创新的数据技术走遍全球 这一次 陶建辉带着 TDengine 飞到了丹佛...... 2023 年 5 月 22-24 日&#xff0c;一年一度的开源数据库领域全球最具影响力峰会 Percona Live 2023 在丹佛技术中心万豪酒店举办。Percona Live 是全球持续举办最久的独立开源数据大会&#xff0c…

jsp测试题:

jsp测试选择题 题号答案1C2A3A4A5A6A7B8C9B10A11A12A13A14A15C 简答题&#xff1a; 1.在JSP中&#xff0c;<% int a 3; %>与<%! int b 3; %>中定义的变量有何不同&#xff1f;若要在某一JSP页面中定义一个方法void f()&#xff0c; 应用什么样的语法&#xff1…

社团管理系统

文章目录 社团管理系统一、项目演示二、项目介绍三、系统运行界面图四、系统部分功能截图五、部分代码展示六、底部获取源码 社团管理系统 一、项目演示 社团管理系统 二、项目介绍 基于SpringBoot2Vue的前后端分离的社团管理系统 前后端分离 前端开发 : Vue2 ElementUl 后…

“小白也能玩转Python数据分析,快速掌握技巧!

最近收到好几条私信&#xff0c;想要了解数据分析方面的学习教程。 Python如今势头很猛&#xff0c;但是结合市场环境来说&#xff0c;Python开发岗位的需求还是要低于其他后端语言&#xff0c;但是Python爬虫和数据分析的技能确是实实在在可以用到很多工作中去&#xff0c;所…

Linux 操作系统原理 — netfilter/iptables 流量处理框架

目录 文章目录 目录Netfilter 流量处理框架Netfilter 的实现原理Netfilter 的工作原理规则&#xff08;Rules&#xff09;链&#xff08;Chains&#xff09;表&#xff08;Tables&#xff09;数据包处理流程图 iptables CLIiptables-service指令应用查看规则添加规则删除规则修…

java按照模板导出pdf或者word

一、java按照模板导出pdf &#xff08;一&#xff09;制作模板 1、在word里制作模板 因为PDF常用的软件不支持编辑&#xff0c;所以先用Word工具&#xff0c;如WPS或者Office新建一个空白Word文档&#xff0c;里面制作出自己想要的样式。 2、 将Word转换成PDF形式 将设置好的W…

120G课程内容!龙讯旷腾为您的课题组打造专属空间

我们介绍了龙讯旷腾资源中心&#xff08;http://login.lonxun.com/login&#xff09;是一个知识管理与服务型的综合社区&#xff0c;但资源中心仅仅是一个简单的内容展示平台吗&#xff1f;对于高校课题组的教师和企业管理者来说&#xff0c;资源中心提供了多种辅助教学和建站功…

Ubuntu TDengine集群搭建

我这里用三台服务器搭建集群 1、如果搭建集群的物理节点上之前安装过TDengine先卸载清空&#xff0c;直接执行以下4条命令 rmtaos rm -rf /var/lib/taos rm -rf /var/log/taos rm -rf /etc/taos2、确保集群中所有主机开放端口 6030-6043/tcp&#xff0c;6060/tcp&#xff0c;…