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写的Socks5协议代理服务器
Aug 06 Python
Python使用MD5加密字符串示例
Aug 22 Python
Python多线程结合队列下载百度音乐的方法
Jul 27 Python
Python制作钉钉加密/解密工具
Dec 07 Python
Python给你的头像加上圣诞帽
Jan 04 Python
Python实现统计英文文章词频的方法分析
Jan 28 Python
用OpenCV将视频分解成单帧图片,图片合成视频示例
Dec 10 Python
Django restframework 框架认证、权限、限流用法示例
Dec 21 Python
Python网络爬虫信息提取mooc代码实例
Mar 06 Python
opencv 形态学变换(开运算,闭运算,梯度运算)
Jul 07 Python
浅析Python的命名空间与作用域
Nov 25 Python
python中remove函数的踩坑记录
Jan 04 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下读取文本文件的代码
2008/07/02 PHP
判断是否为指定长度内字符串的php函数
2010/02/16 PHP
php dirname(__FILE__) 获取当前文件的绝对路径
2011/06/28 PHP
php导入导出excel实例
2013/10/25 PHP
PHP基础之输出缓冲区基本概念、原理分析
2019/06/19 PHP
jquery 将disabled的元素置为enabled的三种方法
2009/07/25 Javascript
javascript处理table表格的代码
2010/12/06 Javascript
javascript动态加载二
2012/08/22 Javascript
关于extjs4如何获取grid修改后的数据的问题
2013/08/07 Javascript
JQuery中绑定事件(bind())和移除事件(unbind())
2015/02/27 Javascript
Sort()函数的多种用法
2016/03/20 Javascript
js判断所有表单项不为空则提交表单的实现方法
2016/09/09 Javascript
js实现产品缩略图效果
2017/03/10 Javascript
js推箱子小游戏步骤代码解析
2018/01/10 Javascript
Vue中的methods、watch、computed的区别
2018/11/26 Javascript
12个提高JavaScript技能的概念(小结)
2019/05/09 Javascript
解决VantUI popup 弹窗不弹出或无蒙层的问题
2020/11/03 Javascript
[55:44]OG vs NAVI 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
python encode和decode的妙用
2009/09/02 Python
Python实现二维数组按照某行或列排序的方法【numpy lexsort】
2017/09/22 Python
Python实现的井字棋(Tic Tac Toe)游戏示例
2018/01/31 Python
python2 与 pyhton3的输入语句写法小结
2018/09/10 Python
在Python 不同级目录之间模块的调用方法
2019/01/19 Python
Python爬虫实现爬取百度百科词条功能实例
2019/04/05 Python
Python 编程速成(推荐)
2019/04/15 Python
自荐信格式
2013/12/01 职场文书
医学专业毕业生个人的求职信
2013/12/04 职场文书
中学生校园广播稿
2014/01/16 职场文书
社会学专业学生职业规划书
2014/02/07 职场文书
自立自强的名人事例
2014/02/10 职场文书
《登鹳雀楼》教学反思
2014/04/09 职场文书
社区义诊活动总结
2014/04/30 职场文书
农村门前三包责任书
2014/07/25 职场文书
爱牙日活动总结
2014/08/29 职场文书
公司副总经理岗位职责
2014/10/01 职场文书
建房合同协议书
2016/03/21 职场文书