当前位置: 首页 > news >正文

Django之按钮(actions)

开篇就是道歉,哈哈哈哈,托更了好久好久,最近太忙了没啥时间更新,各位看官有催更的阔以给我私信哇,希望各位看官给个三连!!!😍😍😍😍

一)简介

"actions"按钮是Django框架中的一个特殊按钮,用于批量处理或操作多个数据记录。该按钮通常用于Django的管理界面中,允许用户选择多个记录,并对它们执行相同的操作。
通过使用"actions"按钮,您可以在管理界面中轻松执行批量操作,如删除、导出、标记等。它提供了一个简便的方式来处理大量数据记录,而无需逐个处理每个记录。"actions"按钮的使用非常简单,您只需在Django模型的管理类中定义一个方法,该方法将执行您想要的批量操作。然后,将该方法添加到管理类的actions属性中,以便在管理界面中显示"actions"按钮。用户可以通过选择相应的记录并点击"actions"按钮来执行批量操作。当用户触发"actions"按钮时,Django将调用你定义的方法来处理所有选中的记录。
总之,"actions"按钮是Django框架中用于批量处理或操作多个数据记录的特殊按钮。它使得在管理界面中进行批量操作变得更加方便和高效。

二)使用

1)自定义按钮的功能

关于按钮的功能其实没有那么多的讲究,我们使用自定义按钮只是去实现自己想要的业务逻辑,只需要用函数去实现效果就好,所以按钮一般放在我们的项目中具体的app的admin.py文件中。具体的按钮格式如下:

def custom_button(self, request, queryset):pass

例如,我们需要定义一个名为“lend”的按钮,那么它会实现一个最简单的功能去打印“hello,world!”在控制台:

#按钮
actions = ['lend']
#自定义的按钮功能
def lend(self,request,queryset):print "hello,world!"

如上,我们使用def函数去定义了按钮的功能后,我们还需要使用如下格式去注册按钮在admin.py中,只有这样才可以在admin的后台页面中显示出来:

actions = ['']

当然,自定义按钮的功能有很多,根据你自己的业务逻辑去编辑自己的自定义按钮吧!

2)按钮样式

django admin 默认提供了自定义按钮的支持,但是样式、图标均不可自定义,simplepro在django admin 自定义action的基础上增加了样式、图标、按钮类型自定义。
在这里我将使用具体的例子给大家一个比较直观的观看感受:

  • short_description,string类型,按钮在admin界面上展示的名字
lend.short_description = '上架'

image.png

  • style,string类型,按钮文本的颜色
lend.style = 'color:black;'

image.png

  • icon,string类型,按钮的图标,有想深入了解的读者可以自行查阅:https://element.eleme.cn/#/zh-CN/component/icon
lend.icon = 'fas fa-audio-description'

image.png

  • type,string类型,按钮的具体类型,有想深入了解的读者可以自行查阅:https://element.eleme.cn/#/zh-CN/component/button
lend.type = 'warning'
#warning这个类型的底色是黄色,所以大家可以看见展示出来的底色是黄色

当然,还有着很多的方法,各位看官可以自行查阅一下呢。

3)按钮方法解释

上文我们说过,按钮的默认格式:

def custom_button(self, request, queryset):pass

那么具体的三个参数是什么意思?

字段类型说明
self当前类对象本身
requestHttpRequest请求
querysetQueryset查询对象,会自动增加过滤参数

那么在这里,相信大家看到了这个熟悉又陌生的request,在这里我想详细介绍一下关于request.POST中的参数获取:

字段类型说明
actionstring该值是用于simplepro路由使用,可以不予理会
allstring取值0和1,0未全部选择,1全部选中
keystring自定义按钮的方法名
idsstring逗号分隔的选中的id,如果all=1,该值没有

这里说一个例子:

def test(self, request, queryset):post=request.POSTaction=post.get('action')print(f"获取的action:{action}")pass

那既然有获取参数,当然也有出参,当然,一般都指的是自定义按钮方法返回的数据,例如:

def test(self, request, queryset):return {'state': False,'msg': '用户关联的数据还没有删除!'}

同时,Django内置的message也提供了支持:

def test(self, request, queryset):messages.add_message(request, messages.SUCCESS, '操作成功123123123123')

三)总结

相关文章:

  • Linux服务器 部署飞书信息发送服务
  • 信息系统定级与等级测评的具体过程
  • 测试C#使用AForge从摄像头获取图片
  • 轮廓平滑方法
  • 怎么使用5118站长工具API接口处理采集数据
  • 设计模式之-命令模式,快速掌握命令模式,通俗易懂的讲解命令模式以及它的使用场景
  • 每次maven刷新jdk都要重新设置
  • 2023年12月【考试战报】|ORACLE OCP 19C考试通过
  • 关于测试技能和职业规划,ChatGPT这样说
  • Vue3组合式-依赖注入provideinject
  • 前端 JS 安全对抗原理与实践
  • 全方位掌握卷积神经网络:理解原理 优化实践应用
  • 使用 ElementUI 组件构建无边框 Window 桌面应用(WinForm/WPF)
  • (1)(1.11) SiK Radio v2(一)
  • Spring Cloud Feign作为HTTP客户端调用远程HTTP服务
  • Google 是如何开发 Web 框架的
  • 「面试题」如何实现一个圣杯布局?
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • CentOS7简单部署NFS
  • classpath对获取配置文件的影响
  • java8-模拟hadoop
  • markdown编辑器简评
  • Otto开发初探——微服务依赖管理新利器
  • Spring Cloud中负载均衡器概览
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • python最赚钱的4个方向,你最心动的是哪个?
  • ​2020 年大前端技术趋势解读
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • (1)(1.11) SiK Radio v2(一)
  • (2022 CVPR) Unbiased Teacher v2
  • (4)(4.6) Triducer
  • (4)Elastix图像配准:3D图像
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (poj1.2.1)1970(筛选法模拟)
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (第一天)包装对象、作用域、创建对象
  • (二)换源+apt-get基础配置+搜狗拼音
  • (二)学习JVM —— 垃圾回收机制
  • (二十三)Flask之高频面试点
  • (分享)自己整理的一些简单awk实用语句
  • (离散数学)逻辑连接词
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (十六)串口UART
  • (推荐)叮当——中文语音对话机器人
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • (一)为什么要选择C++
  • .NET Core Web APi类库如何内嵌运行?
  • .net 受管制代码
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • [ linux ] linux 命令英文全称及解释
  • [8-23]知识梳理:文件系统、Bash基础特性、目录管理、文件管理、文本查看编辑处理...
  • [BZOJ] 2427: [HAOI2010]软件安装
  • [C# 开发技巧]实现属于自己的截图工具