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

三)总结

相关推荐
Bytebase7 分钟前
Bytebase 3.3.1 - DML一键回滚支持 Oracle
数据库·oracle
晴天qt0110 分钟前
[mysql]数据类型精讲
数据库·oracle
Jamesvalley1 小时前
【Django】新增字段后兼容旧接口 This field is required
后端·python·django
拿破轮1 小时前
查询Hologres或postgresql中的数据
数据库·postgresql
Tech Synapse1 小时前
基于CARLA与PyTorch的自动驾驶仿真系统全栈开发指南
人工智能·opencv·sqlite
声声codeGrandMaster3 小时前
django之账号管理功能
数据库·后端·python·django
noravinsc3 小时前
django admin 添加自定义页面
django·自定义·admin
Elastic 中国社区官方博客3 小时前
使用 LangGraph 和 Elasticsearch 构建强大的 RAG 工作流
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
AscendKing3 小时前
mongo客户端操作mongodb记录
数据库·mongodb
千千寰宇3 小时前
[设计模式/Java] 设计模式之解释器模式【27】
数据库·设计模式