在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 相关文章推荐
使用setup.py安装python包和卸载python包的方法
Nov 27 Python
Python实现远程调用MetaSploit的方法
Aug 22 Python
Python 的描述符 descriptor详解
Feb 27 Python
python生成excel的实例代码
Nov 08 Python
解析Python中的eval()、exec()及其相关函数
Dec 20 Python
Python实现PS滤镜功能之波浪特效示例
Jan 26 Python
python opencv实现图片旋转矩形分割
Jul 26 Python
transform python环境快速配置方法
Sep 27 Python
对python3中的RE(正则表达式)-详细总结
Jul 23 Python
pytorch GAN伪造手写体mnist数据集方式
Jan 10 Python
python通过matplotlib生成复合饼图
Feb 06 Python
Python过滤掉numpy.array中非nan数据实例
Jun 08 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 判断字符串编码是utf-8 或gb2312实例
2016/11/01 PHP
可拖动窗口,附带鼠标控制渐变透明,开启关闭功能
2006/06/26 Javascript
Javascript hasOwnProperty 方法 &amp; in 关键字
2008/11/26 Javascript
javascript开发随笔二 动态加载js和文件
2011/11/25 Javascript
javascript几个易错点记录
2014/11/26 Javascript
node.js中的path.normalize方法使用说明
2014/12/08 Javascript
js中跨域方法原理详解
2015/07/19 Javascript
简单封装js的dom查询实例代码
2016/07/08 Javascript
详解Angular-Cli中引用第三方库
2017/05/21 Javascript
JS写谷歌浏览器chrome的外挂实例
2018/01/11 Javascript
vuejs前后端数据交互之从后端请求数据的实例
2018/08/11 Javascript
使用ng-packagr打包Angular的方法示例
2018/09/21 Javascript
vue中多路由表头吸顶实现的几种布局方式
2019/04/12 Javascript
详解JavaScript的内存空间、赋值和深浅拷贝
2019/04/17 Javascript
JS使用cookie保存用户登录信息操作示例
2019/05/30 Javascript
解决layer.open后laydate失效的问题
2019/09/06 Javascript
three.js利用gpu选取物体并计算交点位置的方法示例
2019/11/25 Javascript
Javascript 模拟mvc实现点餐程序案例详解
2020/12/24 Javascript
python基础教程之基本数据类型和变量声明介绍
2014/08/29 Python
Python迭代器和生成器介绍
2015/03/06 Python
python开发之基于thread线程搜索本地文件的方法
2015/11/11 Python
python机器学习之随机森林(七)
2018/03/26 Python
Python multiprocess pool模块报错pickling error问题解决方法分析
2019/03/20 Python
python如何实现复制目录到指定目录
2020/02/13 Python
Python日志器使用方法及原理解析
2020/09/27 Python
Python 如何实现数据库表结构同步
2020/09/29 Python
Python logging自定义字段输出及打印颜色
2020/11/30 Python
html5响应式开发自动计算fontSize的方法
2020/01/13 HTML / CSS
康帕斯酒店预订:Compass Hospitality(支持中文)
2018/08/23 全球购物
Crocs欧洲官网:Crocs Europe
2020/01/14 全球购物
公务员个人自我评价分享
2013/11/06 职场文书
纪检干部个人对照检查材料
2014/09/23 职场文书
第二批党的群众路线教育实践活动总结报告
2014/10/30 职场文书
怒海潜将观后感
2015/06/11 职场文书
培训心得体会怎么写
2016/01/25 职场文书
幼师自荐信范文(2016推荐篇)
2016/01/28 职场文书