在django admin中添加自定义视图的例子


Posted in Python onJuly 26, 2019

django admin提供了完善的用户管理和数据模型管理,方便实用。研究了一下在admin里面添加自己的页面。

在admin.py里继承django.contrib.admin.ModelAdmin基类

class FaceAdmin(admin.ModelAdmin):

然后在里面写自己的视图处理函数。基类里面的save_model和delete_model函数可以做数据对象的新建和删除的预处理和后处理。自建的函数如果要redirect到自己建的view,反向映射要包含admin:,写成

return HttpResponseRedirect(reverse('admin:manage_face_image', args=(face_id,)))

然后添加一个获取路由的函数,把自己的路由添加上

def get_urls(self):
  urls = super().get_urls()
  my_urls = [
    path('<int:face_id>/manage_face_image/',
       self.admin_site.admin_view(self.manage_face_image), name='manage_face_image'),
    path('<int:face_id>/<str:face_file>/delete_face_image/',
       self.admin_site.admin_view(self.delete_face_image), name='delete_face_image')
  ]
  return my_urls + urls

最后把子类和数据模型一起注册成admin的站点:

admin.site.register(Face, FaceAdmin)

这样就可以通过/admin/app/face/5/manage_face_image/这个url来访问自己的视图了。详细说一下,admin是指admin站点,app是指自己的djangoapp,face是数据模型。

自定义视图的模板在最顶上继承admin_site的基模板

{% extends "admin/base_site.html" %}

但是会发现右上角没有正常的admin网站包含的欢迎信息和站点视图以及修改密码和注销的链接。因为在base_site.html的基模板base.html中有一个判断{% if has_permission %},这是django.contrib.admin.AdminSite类的一个属性,返回的是user.is_active and user.is_staff,我们没有继承这个基类所以没有这个属性,其实base.html就在下面几行也有这个判断,方便起见直接把if has_permission这个判断删了就行了,虽然仍然没有站点视图,但是已经好看多了。还有一点要注意的是模板在用url时要加上admin:,写成

{% url 'admin:manage_face_image' face_id %}

以上这篇在django admin中添加自定义视图的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
跟老齐学Python之让人欢喜让人忧的迭代
Oct 02 Python
Python装饰器使用示例及实际应用例子
Mar 06 Python
Python找出9个连续的空闲端口
Feb 01 Python
举例讲解Python设计模式编程中对抽象工厂模式的运用
Mar 02 Python
Python模拟三级菜单效果
Sep 11 Python
pandas带有重复索引操作方法
Jun 08 Python
python画微信表情符的实例代码
Oct 09 Python
pandas 空数据处理方法详解
Nov 02 Python
关于keras中keras.layers.merge的用法说明
May 23 Python
python怎么自定义捕获错误
Jun 29 Python
python环境搭建和pycharm的安装配置及汉化详细教程(零基础小白版)
Aug 19 Python
Python 中如何使用 virtualenv 管理虚拟环境
Jan 21 Python
深入了解Django中间件及其方法
Jul 26 #Python
如何在Django项目中引入静态文件
Jul 26 #Python
Python 画出来六维图
Jul 26 #Python
django做form表单的数据验证过程详解
Jul 26 #Python
python用win32gui遍历窗口并设置窗口位置的方法
Jul 26 #Python
解决python中导入win32com.client出错的问题
Jul 26 #Python
Django CBV类的用法详解
Jul 26 #Python
You might like
flash用php连接数据库的代码
2011/04/21 PHP
php中使用PHPExcel读写excel(xls)文件的方法
2014/09/15 PHP
WordPress中获取指定分类及其子分类下的文章数目
2015/12/31 PHP
PHP生成短网址方法汇总
2016/07/12 PHP
php5.2的curl-bug 服务器被php进程卡死问题排查
2016/09/19 PHP
通过chrome浏览器控制台(Console)进行PHP Debug的方法
2016/10/19 PHP
Yii框架弹出框功能示例
2017/01/07 PHP
php中时间函数date及常用的时间计算
2017/05/12 PHP
PHP强制转化的形式整理
2020/05/22 PHP
让您的菜单不离网站
2006/10/03 Javascript
javascript下给元素添加事件的方法与代码
2007/08/13 Javascript
ASP Json Parser修正版
2009/12/06 Javascript
被jQuery折腾得半死,揭秘为何jQuery为何在IE/Firefox下均无法使用
2010/01/22 Javascript
jQuery学习2 选择器的使用说明
2010/02/07 Javascript
jquery的键盘事件修改代码
2011/02/24 Javascript
使用JavaScript和C#中获得referer
2014/11/14 Javascript
JavaScript Math.ceil 方法(对数值向上取整)
2015/01/09 Javascript
Bootstrap框架动态生成Web页面文章内目录的方法
2016/05/12 Javascript
深入理解JQuery循环绑定事件
2016/06/02 Javascript
jQuery Form插件使用详解_动力节点Java学院整理
2017/07/17 jQuery
easyui datagrid 表格中操作栏 按钮图标不显示的解决方法
2017/07/27 Javascript
JavaScript中严格判断NaN的方法
2018/02/16 Javascript
详解微信小程序开发聊天室—实时聊天,支持图片预览
2019/05/20 Javascript
javascript设计模式之迭代器模式
2020/01/30 Javascript
vue 实现在同一界面实现组件的动态添加和删除功能
2020/06/16 Javascript
Vue+Bootstrap收藏(点赞)功能逻辑与具体实现
2020/10/22 Javascript
对python 调用类属性的方法详解
2019/07/02 Python
对Pytorch中Tensor的各种池化操作解析
2020/01/03 Python
在Sublime Editor中配置Python环境的详细教程
2020/05/03 Python
详解用Python调用百度地图正/逆地理编码API
2020/07/02 Python
意大利值得信赖的在线超级药房:PillolaStore
2020/02/05 全球购物
美国一家著名的手表在线折扣网站:Discount Watch Store
2020/02/24 全球购物
自动化专业个人求职信范文
2013/11/29 职场文书
大学生实习鉴定评语
2014/04/25 职场文书
大学生推广普通话演讲稿
2014/09/21 职场文书
怎样做好公众演讲能力?
2019/08/28 职场文书