Django Admin后台模型列表页面如何添加自定义操作按钮


Posted in Python onNovember 11, 2020

你需要添加两个按钮:一个按钮使所有英雄都可以死亡,而另一个按钮使所有英雄永生。由于它会影响所有英雄,而与选择无关,因此这需要一个单独的按钮,而不是操作下拉菜单。

首先,我们要更改HeroAdmin管理模型使用的模板文件,以便我们可以添加两个按钮:

@admin.register(Hero)
class HeroAdmin(admin.ModelAdmin, ExportCsvMixin):
  change_list_template = "entities/heroes_changelist.html"

然后,我们需要覆盖get_urls方法,并在管理模型上添加set_immortal和set_mortal方法。它们将用作两种view视图:

def get_urls(self):
  urls = super().get_urls()
  my_urls = [
    path('immortal/', self.set_immortal),
    path('mortal/', self.set_mortal),
  ]
  return my_urls + urls
def set_immortal(self, request):
  self.model.objects.all().update(is_immortal=True)
  self.message_user(request, "All heroes are now immortal")
  return HttpResponseRedirect("../")
def set_mortal(self, request):
  self.model.objects.all().update(is_immortal=False)
  self.message_user(request, "All heroes are now mortal")
  return HttpResponseRedirect("../")

最后,我们通过扩展admin/change_list.html来创建模板文件entities/heroes_changelist.html:

{% extends 'admin/change_list.html' %}
{% block object-tools %}
  <div>
    <form action="immortal/" method="POST">
      {% csrf_token %}
        <button type="submit">Make Immortal</button>
    </form>
    <form action="mortal/" method="POST">
      {% csrf_token %}
        <button type="submit">Make Mortal</button>
    </form>
  </div>
  <br />
  {{ block.super }}
{% endblock %}

Django Admin后台模型列表页面如何添加自定义操作按钮

在点击页面的make_mortal动作后,英雄全都可以死亡,你会看到如下消息提示。

Django Admin后台模型列表页面如何添加自定义操作按钮

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
跨平台python异步回调机制实现和使用方法
Nov 26 Python
基于Python实现的扫雷游戏实例代码
Aug 01 Python
Python的Django框架下管理站点的基本方法
Jul 17 Python
深入理解python多进程编程
Jun 12 Python
Python遍历文件夹和读写文件的实现方法
May 10 Python
python 3.5实现检测路由器流量并写入txt的方法实例
Dec 17 Python
python搭建服务器实现两个Android客户端间收发消息
Apr 12 Python
python 读取鼠标点击坐标的实例
Dec 29 Python
详解python 爬取12306验证码
May 10 Python
pytorch中的卷积和池化计算方式详解
Jan 03 Python
python让函数不返回结果的方法
Jun 22 Python
详解tensorflow之过拟合问题实战
Nov 01 Python
Django启动时找不到mysqlclient问题解决方案
Nov 11 #Python
Python+logging输出到屏幕将log日志写入文件
Nov 11 #Python
通过Django Admin+HttpRunner1.5.6实现简易接口测试平台
Nov 11 #Python
Django自定义YamlField实现过程解析
Nov 11 #Python
Python监听剪切板实现方法代码实例
Nov 11 #Python
如何通过python计算圆周率PI
Nov 11 #Python
python中turtle库的简单使用教程
Nov 11 #Python
You might like
通过具体程序来理解PHP里面的抽象类
2010/01/28 PHP
php面向对象与面向过程两种方法给图片添加文字水印
2015/08/26 PHP
thinkPHP5框架中widget的功能与用法详解
2018/06/11 PHP
laravel excel 上传文件保存到本地服务器功能
2019/11/14 PHP
学习ExtJS fit布局使用说明
2009/10/08 Javascript
JavaScript获取某年某月的最后一天附截图
2014/06/23 Javascript
jQuery插件StickUp实现网页导航置顶
2015/04/12 Javascript
javascript限制文本框输入值类型的方法
2015/05/07 Javascript
JS代码防止SQL注入的方法(超简单)
2016/04/12 Javascript
JS组件系列之Bootstrap table表格组件神器【终结篇】
2016/05/10 Javascript
逻辑表达式中与或非的用法详解
2016/06/06 Javascript
浅谈JS验证表单文本域输入空格的问题
2017/02/14 Javascript
js for循环倒序输出数组元素的实例
2017/03/01 Javascript
在node中如何使用 ES6
2017/04/22 Javascript
实例解析ES6 Proxy使用场景介绍
2018/01/08 Javascript
javascript和php使用ajax通信传递JSON的实例
2018/08/21 Javascript
vue车牌号校验和银行校验实战
2019/01/23 Javascript
bootstrap tooltips在 angularJS中的使用方法
2019/04/10 Javascript
关于微信小程序获取小程序码并接受buffer流保存为图片的方法
2019/06/07 Javascript
[52:20]DOTA2-DPC中国联赛正赛 SAG vs XGBO3 第一场 3月5日
2021/03/11 DOTA
Python的Tornado框架异步编程入门实例
2015/04/24 Python
CentOS中使用virtualenv搭建python3环境
2015/06/08 Python
让Python更加充分的使用Sqlite3
2017/12/11 Python
python解析json串与正则匹配对比方法
2018/12/20 Python
Python后台管理员管理前台会员信息的讲解
2019/01/28 Python
将python2.7添加进64位系统的注册表方式
2019/11/20 Python
关于keras.layers.Conv1D的kernel_size参数使用介绍
2020/05/22 Python
Python爬虫获取页面所有URL链接过程详解
2020/06/04 Python
在pycharm中文件取消用 pytest模式打开的操作
2020/09/01 Python
Raleigh兰令自行车美国官网:英国凤头牌自行车
2018/01/08 全球购物
解除劳动合同协议书范本
2014/04/14 职场文书
校长师德师风自我剖析材料
2014/09/29 职场文书
2014年调度员工作总结
2014/11/19 职场文书
2016年重阳节慰问信
2015/12/01 职场文书
党风廉政承诺书2016
2016/03/25 职场文书
分享五个Node.js开发的优秀实践 
2022/04/07 NodeJs