在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 相关文章推荐
解决Django模板无法使用perms变量问题的方法
Sep 10 Python
Python并发之多进程的方法实例代码
Aug 15 Python
如何在python字符串中输入纯粹的{}
Aug 22 Python
centos6.8安装python3.7无法import _ssl的解决方法
Sep 17 Python
对python mayavi三维绘图的实现详解
Jan 08 Python
使用python socket分发大文件的实现方法
Jul 08 Python
wxPython多个窗口的基本结构
Nov 19 Python
Python中如何引入第三方模块
May 27 Python
python利用os模块编写文件复制功能——copy()函数用法
Jul 13 Python
python 删除系统中的文件(按时间,大小,扩展名)
Nov 19 Python
Python echarts实现数据可视化实例详解
Mar 03 Python
Python可变与不可变数据和深拷贝与浅拷贝
Apr 06 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
PHP 中执行系统外部命令
2006/10/09 PHP
php入门学习知识点二 PHP简单的分页过程与原理
2011/07/14 PHP
Laravel构建即时应用的一种实现方法详解
2017/08/31 PHP
用脚本调用样式的几种方法
2006/12/09 Javascript
解析js如何获取当前url中的参数值并复制给input
2013/06/23 Javascript
使图片旋转的3种解决方案
2013/11/21 Javascript
ECMAScript 5中的属性描述符详解
2015/03/02 Javascript
浅谈javascript获取元素transform参数
2015/07/24 Javascript
Jqgrid之强大的表格插件应用
2015/12/02 Javascript
使用jQuery+EasyUI实现CheckBoxTree的级联选中特效
2015/12/06 Javascript
TypeOf这些知识点你了解吗
2016/02/21 Javascript
JavaScript实现跟随滚动缓冲运动广告框
2017/07/15 Javascript
vue router自动判断左右翻页转场动画效果
2017/10/10 Javascript
AngularJS集合数据遍历显示的实例
2017/12/27 Javascript
在Vue项目中使用d3.js的实例代码
2018/05/01 Javascript
微信小程序实现bindtap等事件传参
2019/04/08 Javascript
微信小程序 扭蛋抽奖机css3动画实现详解
2019/07/19 Javascript
javascript面向对象三大特征之封装实例详解
2019/07/24 Javascript
在elementui中Notification组件添加点击事件实例
2020/11/11 Javascript
[02:12]打造更好的电竞完美世界:完美盛典回顾篇
2018/12/19 DOTA
Python实现多线程下载文件的代码实例
2014/06/01 Python
Python中字典(dict)合并的四种方法总结
2017/08/10 Python
PyTorch上实现卷积神经网络CNN的方法
2018/04/28 Python
Python selenium实现微博自动登录的示例代码
2018/05/16 Python
深入了解Django中间件及其方法
2019/07/26 Python
通过实例简单了解Python中yield的作用
2019/12/11 Python
Tensorflow训练MNIST手写数字识别模型
2020/02/13 Python
python压包的概念及实例详解
2021/02/17 Python
HTML5之WebGL 3D概述(下)—借助类库开发及框架介绍
2013/01/31 HTML / CSS
俄罗斯玩具、儿童用品、儿童服装和鞋子网上商店:MyToys.ru
2019/10/14 全球购物
优秀的茶餐厅创业计划书
2014/01/03 职场文书
食品安全汇报材料
2014/08/18 职场文书
导游词之秦皇岛燕塞湖
2020/01/03 职场文书
nginx 反向代理之 proxy_pass的实现
2021/03/31 Servers
一条 SQL 语句执行过程
2022/03/17 MySQL
Java实现扫雷游戏详细代码讲解
2022/05/25 Java/Android