Django之按钮(actions)

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

一)简介

"actions"按钮是Django框架中的一个特殊按钮,用于批量处理或操作多个数据记录。该按钮通常用于Django的管理界面中,允许用户选择多个记录,并对它们执行相同的操作。

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

总之,"actions"按钮是Django框架中用于批量处理或操作多个数据记录的特殊按钮。它使得在管理界面中进行批量操作变得更加方便和高效。

二)使用

1)自定义按钮的功能

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

python 复制代码
def custom_button(self, request, queryset):
        pass

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

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

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

python 复制代码
actions = ['']

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

2)按钮样式

django admin 默认提供了自定义按钮的支持,但是样式、图标均不可自定义,simplepro在django admin 自定义action的基础上增加了样式、图标、按钮类型自定义。

在这里我将使用具体的例子给大家一个比较直观的观看感受:

  • short_description,string类型,按钮在admin界面上展示的名字
python 复制代码
lend.short_description = '上架'
  • style,string类型,按钮文本的颜色
python 复制代码
lend.style = 'color:black;'
python 复制代码
lend.icon = 'fas fa-audio-description'
python 复制代码
lend.type = 'warning'
#warning这个类型的底色是黄色,所以大家可以看见展示出来的底色是黄色

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

3)按钮方法解释

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

python 复制代码
def custom_button(self, request, queryset):
        pass

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

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

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

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

这里说一个例子:

python 复制代码
def test(self, request, queryset):
    post=request.POST

    action=post.get('action')
    print(f"获取的action:{action}")
    pass

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

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

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

python 复制代码
def test(self, request, queryset):
    messages.add_message(request, messages.SUCCESS, '操作成功123123123123')

三)总结

相关推荐
time never ceases13 分钟前
使用docker方式进行Oracle数据库的物理迁移(helowin/oracle_11g)
数据库·docker·oracle
Frank牛蛙17 分钟前
1.每日SQL----2024/11/7
数据库·sql
Ciderw19 分钟前
块存储、文件存储和对象存储详细介绍
网络·数据库·nvme·对象存储·存储·块存储·文件存储
薛晓刚20 分钟前
数据库优化指南:如何将基本功能运用到极致?
数据库
stars_User23 分钟前
MySQL数据库面试题(下)
数据库·mysql
未来之窗软件服务1 小时前
sql速度优化多条合并为一条语句
数据库
山东布谷科技官方1 小时前
布谷直播源码部署服务器关于数据库配置的详细说明
运维·服务器·数据库·直播系统源码·直播源码·直播系统搭建·直播软件开发
易云码1 小时前
信息安全建设方案,网络安全等保测评方案,等保技术解决方案,等保总体实施方案(Word原件)
数据库·物联网·安全·web安全·低代码
newxtc1 小时前
【客观理性深入讨论国产中间件及数据库-科创基础软件】
数据库·中间件·国产数据库·国产中间件·科创
水月梦镜花1 小时前
redis:list列表命令和内部编码
数据库·redis·list