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

news/2025/3/5 5:36:09/

目录

一、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.ppmy.cn/news/82369.html

相关文章

PAI-Diffusion中文模型全面升级,海量高清艺术大图一键生成

作者&#xff1a;段忠杰&#xff08;终劫&#xff09;、刘冰雁&#xff08;伍拾&#xff09;、汪诚愚&#xff08;熊兮&#xff09;、黄俊&#xff08;临在&#xff09; 背景 以Stable Diffusion模型为代表&#xff0c;AI生成内容&#xff08;AI Generated Content&#xff…

docker-harbor私有仓库的部署与管理

目录 Harbor Harbor介绍 Harbor的特性 Harbor的构成 部署Harbor 搭建本地私有仓库 Docker容器的重启策略 部署Docker-compose服务 部署Harbor服务 关于Harbor.cfg配置文件中两类参数 启动Harbor 查看 Harbor 启动镜像 创建一个新项目 在其他客户端上传镜像 维护管…

新星计划【Java微服务+云原生】赛道开启!

前排提醒&#xff1a;这里是新星计划2023【微服务云原生】学习方向的报名入口&#xff0c;一经报名&#xff0c;不可更换。 ↓↓↓报名入口&#xff1a;新星计划2023【微服务云原生】学习方向报名入口&#xff01;-CSDN社区 一、关于本学习方向导师 博客昵称&#xff1a;鹤冲…

数据结构第四天: Complete Binary Search Tree 【搜索二叉树,完全二叉树】

二叉搜索树 bst 被递归地定义为具有以下属性的二叉树节点的左子树仅包含键小于节点键的节点 a 的右子树节点只包含键大于或等于节点键的节点 左右子树也必须是二叉搜索树 完全二叉树cbt是一棵完全充满可能异常的树从左到右填充的底层现在给定一系列不同的非负整数键&#xff0c…

墨云科技 web漏洞研究岗一面复盘

墨云科技 web漏洞研究岗一面复盘 1.xss的分类说一下2.xss怎么防御的3.详细讲讲什么是DOM,越详细越好4.反射型XSS和DOM型XSS的区别5.富文本XSS了解过吗,说一下6.你能讲讲JNDI注入吗?比如JNDI注入的原理7.JNDI注入除了ldap协议还了解什么其他的协议?8.JNDI注入除了加载远程文…

Cisco Secure Web Appliance Virtual 15.0 发布 - 适用于网络安全的思科高级威胁防护

Cisco Secure Web Appliance Virtual, AsyncOS for WSA 15.0.0 LD 请访问原文链接&#xff1a;https://sysin.org/blog/cisco-secure-web-appliance-15/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org Cisco Secure Web Appli…

最小二乘法求导-公式推导

多元线性回归模型 1. 建立模型&#xff1a;模型函数 Y ^ W T X \hat{Y} W^TX Y^WTX 如果有 n1 条数据&#xff0c;每条数据有 m1 种x因素&#xff08;每种x因素都对应 1 个权重w&#xff09;&#xff0c;则 &#x1f449;已知数据&#xff1a;实际Y值 [ y 0 y 1 y 2 y 3 . …

HTML小结

HTML 超文本标记语言&#xff08;Hypertext Markup Language&#xff09;,是用来开发网页结构和内容的技术。 通过各类标签标记想要显示的网页的各个部分&#xff0c;然后浏览器再通过HTML标准&#xff0c;把标签转换为网页内容。超文本指的是网页可以包含图片、链接、音乐、视…