在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编写网页爬虫脚本并实现APScheduler调度
Jul 28 Python
python中字典(Dictionary)用法实例详解
May 30 Python
Python的collections模块中namedtuple结构使用示例
Jul 07 Python
django框架如何集成celery进行开发
May 24 Python
tensorflow实现逻辑回归模型
Sep 08 Python
python与C、C++混编的四种方式(小结)
Jul 15 Python
Python Selenium 之数据驱动测试的实现
Aug 01 Python
python实现发送form-data数据的方法详解
Sep 27 Python
Python实现非正太分布的异常值检测方式
Dec 09 Python
Python动态导入模块:__import__、importlib、动态导入的使用场景实例分析
Mar 30 Python
Python更换pip源方法过程解析
May 19 Python
Python list和str互转的实现示例
Nov 16 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
Apache环境下PHP利用HTTP缓存协议原理解析及应用分析
2010/02/16 PHP
基于php-fpm 参数的深入理解
2013/06/03 PHP
php查询mysql大量数据造成内存不足的解决方法
2015/03/04 PHP
php数字运算验证码的实现代码
2015/07/30 PHP
摘自织梦CMS中的图片处理类
2015/08/08 PHP
Joomla简单判断用户是否登录的方法
2016/05/04 PHP
完美解决phpdoc导出文档中@package的warning及Error的错误
2016/05/17 PHP
JavaScript实现拖拽网页内元素的方法
2015/04/15 Javascript
JavaScript控制网页平滑滚动到指定元素位置的方法
2015/04/17 Javascript
JavaScript中的parse()方法使用简介
2015/06/12 Javascript
JS实现消息来时让网页标题闪动效果的方法
2016/04/20 Javascript
15位和18位身份证JS校验的简单实例
2016/07/18 Javascript
JQuery查找子元素find()和遍历集合each的方法总结
2017/03/07 Javascript
Vue filters过滤器的使用方法
2017/07/14 Javascript
js 将canvas生成图片保存,或直接保存一张图片的实现方法
2018/01/02 Javascript
vue2过滤器模糊查询方法
2018/09/16 Javascript
javascript中floor使用方法总结
2019/02/02 Javascript
简单了解JS打开url的方法
2020/02/21 Javascript
javascript使用canvas实现饼状图效果
2020/09/08 Javascript
[39:18]完美世界DOTA2联赛PWL S3 Forest vs LBZS 第二场 12.17
2020/12/19 DOTA
基于python 二维数组及画图的实例详解
2018/04/03 Python
win8下python3.4安装和环境配置图文教程
2018/07/31 Python
python异步存储数据详解
2019/03/19 Python
python实现LBP方法提取图像纹理特征实现分类的步骤
2019/07/11 Python
python中enumerate() 与zip()函数的使用比较实例分析
2019/09/03 Python
jenkins配置python脚本定时任务过程图解
2019/10/29 Python
.img/.hdr格式转.nii格式的操作
2020/07/01 Python
Python 发送邮件方法总结
2020/08/10 Python
详解用python -m http.server搭一个简易的本地局域网
2020/09/24 Python
约瑟夫·特纳男装:Joseph Turner
2017/10/10 全球购物
如何查询Oracle数据库中已经创建的索引
2013/10/11 面试题
水利学院求职自荐书
2014/02/01 职场文书
初中生自我鉴定
2014/02/04 职场文书
2014年度安全生产目标管理责任书
2014/07/25 职场文书
高二英语教学反思
2016/03/03 职场文书
2019年幼儿园家长接送责任书
2019/10/29 职场文书