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转码问题的解决方法
Oct 07 Python
python通过正则查找微博@(at)用户的方法
Mar 13 Python
Python使用scrapy采集数据过程中放回下载过大页面的方法
Apr 08 Python
利用Python脚本在Nginx和uwsgi上部署MoinMoin的教程
May 05 Python
解析Python中while true的使用
Oct 13 Python
Redis使用watch完成秒杀抢购功能的代码
May 07 Python
python验证码识别教程之利用滴水算法分割图片
Jun 05 Python
python 通过类中一个方法获取另一个方法变量的实例
Jan 22 Python
python在回调函数中获取返回值的方法
Feb 22 Python
详解Python字典的操作
Mar 04 Python
python SVD压缩图像的实现代码
Nov 05 Python
Python GUI编程学习笔记之tkinter事件绑定操作详解
Mar 30 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 Ajax乱码
2008/04/09 PHP
深入解析Laravel5.5中的包自动发现Package Auto Discovery
2017/09/13 PHP
CI框架(CodeIgniter)操作redis的方法详解
2018/01/25 PHP
Swoole实现异步投递task任务案例详解
2019/04/02 PHP
JavaScript 笔记二 Array和Date对象方法
2010/05/22 Javascript
使用js操作cookie的一点小收获分享
2013/09/03 Javascript
JS动态添加与删除select中的Option对象(示例代码)
2013/12/25 Javascript
jquery提交form表单时禁止重复提交的方法
2014/02/13 Javascript
node.js中的fs.mkdirSync方法使用说明
2014/12/17 Javascript
jQuery中val()方法用法实例
2014/12/25 Javascript
javascript实用方法总结
2015/02/06 Javascript
详细谈谈AngularJS的子级作用域问题
2016/09/05 Javascript
react-native ListView下拉刷新上拉加载实现代码
2017/08/03 Javascript
JavaScript实现修改伪类样式
2017/11/27 Javascript
[03:20]次级联赛厮杀超职业 现超级兵对拆世纪大战
2014/10/30 DOTA
Python urllib、urllib2、httplib抓取网页代码实例
2015/05/09 Python
python3使用smtplib实现发送邮件功能
2018/05/22 Python
对numpy Array [: ,] 的取值方法详解
2018/07/02 Python
Python小白必备的8个最常用的内置函数(推荐)
2019/04/03 Python
Python常用模块之requests模块用法分析
2019/05/15 Python
Python使用qrcode二维码库生成二维码方法详解
2020/02/17 Python
Python如何基于Tesseract实现识别文字功能
2020/06/05 Python
解决Keras中循环使用K.ctc_decode内存不释放的问题
2020/06/29 Python
Html5元素及基本语法详解
2016/08/02 HTML / CSS
HTML5的postMessage的使用手册
2018/12/19 HTML / CSS
英国领先的在线礼品店:Getting Personal
2019/09/24 全球购物
P D PAOLA法国官网:西班牙著名的珠宝首饰品牌
2020/02/15 全球购物
局域网标准
2016/09/10 面试题
办公室助理岗位职责
2013/12/25 职场文书
十岁生日父母答谢词
2014/01/18 职场文书
趣味活动策划方案
2014/02/08 职场文书
生物制药专业自我鉴定
2014/02/19 职场文书
推普周国旗下讲话稿
2014/09/21 职场文书
学雷锋倡议书
2015/01/19 职场文书
2016年春节慰问信息
2015/03/25 职场文书
2019年第四季度财务部门工作计划
2019/11/02 职场文书