Django之按钮(actions)

news2024/9/24 11:26:28

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

一)简介

"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.POST

    action=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')

三)总结

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

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

相关文章

python:改进型鳟海鞘算法(SSALEO)求解23个基本函数

一、改进型鳟海鞘算法SSALEO 改进型鳟海鞘算法(SSALEO)由Mohammed Qaraad等人于2022年提出。 参考文献:M. Qaraad, S. Amjad, N. K. Hussein, S. Mirjalili, N. B. Halima and M. A. Elhosseini, "Comparing SSALEO as a Scalable Larg…

部署谷歌的Gemini大模型

前言 本文将介绍如何使用Docker、Docker-Compose私有化部署谷歌的Gemini大模型,以及没有服务器的情况下如何使用Vercel来部署。 Demo: 使用新加坡云服务器部署:Gemini Pro Chat (snowice.eu.org) 使用Vercel部署:Gemini Pro Chat (snowice.eu…

NGUI基础-三大基础组件之Root组件

NGUI NGUI(Next-Gen UI)是一款用于Unity游戏引擎的UI插件,它提供了一套功能强大、灵活易用的界面开发工具。在NGUI中,Root(根节点)是一个重要的概念。 基础组件之Root Root是NGUI中的最高层级节点&#…

Pytest+Requests+Allure实现接口自动化测试

一、整体结构 框架组成:pytestrequestsallure设计模式: 关键字驱动项目结构: 工具层:api_keyword/参数层:params/用例层:case/数据驱动:data_driver/数据层:data/逻辑层&#xff1a…

IP代理科普| 共享IP还是独享IP?两者的区别与优势

通俗地讲,共享IP就像乘坐公共汽车一样,您可以到达目的地,但将与其他乘客共享旅程,座位很可能是没有的。独享IP就像坐出租车一样,您可以更快到达目的地,由于车上只有您一个人,座位是您一个人专用…

本机ping不通虚拟机

windows下finall shell连不上虚拟机了,之前是可以的,然后ping虚拟机,发现也ping不通,随后到处找问题。 在本地部分,控制面板 ——>网络和Internet——>网络连接 , 可以看到 VMnet1和Vmnet8虽然都是已…

AIGC|什么是深度学习?

深度学习是近年来人工智能领域最热门的话题之一。它是一种通过模拟人脑神经网络工作原理,进行大规模数据处理和模式识别的机器学习方法。随着计算能力的提升和大数据时代的到来,深度学习在图像识别、语音识别、自然语言处理等领域取得了突破性进展&#…

TikTok用户群体分析:探索不同文化间的共通之处

随着社交媒体的崛起,TikTok作为一款短视频平台已经深刻影响了全球范围内的用户。不同文化、不同国家的人们在TikTok上分享着各自的生活、创意和娱乐,形成了一个多元而丰富的社区。 本文将深入分析TikTok用户群体,探索不同文化间的共通之处&a…

java面向对象编程(中级)

面向对象编程(中级) 1、包 (1) 什么是包? 在Java中,包(Package)是用于组织和管理类以及其他Java 程序元素的一种机制。它是一种命名空间,可以将相关的类和接口组织在一…

前端测试——端对端测试框架 Playwright 总结

在进行前端测试前,我们需要明确我们需要怎样的前端测试。 前端测试类型总结 前端应用测试分为几种常见类型: 端到端(e2e) :一个辅助机器人,表现得像一个用户,在应用程序周围点击,并验证其功能…

2024年【四川省安全员A证】及四川省安全员A证实操考试视频

题库来源:安全生产模拟考试一点通公众号小程序 四川省安全员A证是安全生产模拟考试一点通总题库中生成的一套四川省安全员A证实操考试视频,安全生产模拟考试一点通上四川省安全员A证作业手机同步练习。2024年【四川省安全员A证】及四川省安全员A证实操考…

vue3组件通信(父给子传参,子调用父的方法,父调用子的方法,顶层组件给底层组件传参,底层组件调用顶层组件的方法)

目录 1.父传子(父给子传参) 2.子传父(子调用父的方法) 3.父调用子的方法 4.顶层给底层传参,底层调用顶层的方法 5.模板引用 1.父传子(父给子传参) ①.步骤 父组件中给子组件通过绑定属性…

国内厉害的游戏开发公司有哪些?

中懿游游戏软件开发,中国有许多厉害的游戏开发公司,其中一些在国际上也享有盛誉。以下是一些在中国游戏开发领域中备受关注的公司: 腾讯游戏(Tencent Games): 作为中国最大的互联网公司之一,腾讯的游戏分支…

【鸿蒙应用ArkTS开发系列】- 沉浸式状态栏实现

文章目录 一、前言二、封装沉浸式状态栏管理类1、创建Demo工程2、封装状态栏管理类 三、编写页面实现沉浸式状态栏效果1、存储windowStage实例2、Page页面中实现沉浸式开启关闭功能2.1、开启沉浸式状态栏2.2、设置标题栏偏移量 一、前言 在应用开发中,页面跟状态栏…

算法练习Day20 (Leetcode/Python-回溯算法)

虽然看似进入了一个新章节,但其实还是前几天二叉树章节的延续。。 回溯算法 (以下内容摘抄自代码随想录): 回溯法解决的问题都可以抽象为树形结构,是的,我指的是所有回溯法的问题都可以抽象为树形结构&…

etcd-workbench一款免费好用的ETCD客户端,支持SSHTunnel、版本对比等功能

介绍 今天推荐一款完全免费的ETCD客户端,可以私有化部署: etcd-workbench 开源地址:https://github.com/tzfun/etcd-workbench Gitee地址:https://gitee.com/tzfun/etcd-workbench 下载 本地运行 从 官方Release 下载最新版的 jar 包&am…

详谈 springboot整合shiro

背景: 本章将进一步的落地实践学习,在springboot中如何去整合shrio,整个过程步骤有个清晰的了解。 利用Shiro进行登录认证主要步骤: 1. 添加依赖:首先,在pom.xml文件中添加Spring Boot和Shiro的相关依赖…

Unprocessing Images for Learned Raw Denoising

原文 RWA Image Dataset:the Darmstadt Noise Dataset Abstract 1、Introduction 1、传统图像去噪方法:分析图像属性、对噪声建模(传统方法好像总是这样,建立模型然后用数学方法贴近模型) TBD:找传统的…

开源自托管导航页配置服务Dashy本地搭建结合内网穿透远程访问

开源自托管导航页配置服务Dashy本地搭建结合内网穿透远程访问 简介1. 安装Dashy2. 安装cpolar3.配置公网访问地址4. 固定域名访问 简介 Dashy 是一个开源的自托管的导航页配置服务,具有易于使用的可视化编辑器、状态检查、小工具和主题等功能。你可以将自己常用的一…

网络编程--socket编程

这里写目录标题 套接字概念通信原理总结 预备知识网络字节序简介字节转换函数 IP地址转换函数为什么单独列出函数原型sockaddr结构体 一级目录二级目录二级目录二级目录 一级目录二级目录二级目录二级目录 套接字 概念 Socket本身有插座的意思,但他是进程之间网络通…