在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之入门(三)序列
May 25 Python
python实现读取并显示图片的两种方法
Jan 13 Python
python 自动去除空行的实例
Jul 24 Python
python reverse反转部分数组的实例
Dec 13 Python
安装docker-compose的两种最简方法
Jul 30 Python
TensorBoard 计算图的查看方式
Feb 15 Python
python MultipartEncoder传输zip文件实例
Apr 07 Python
Python使用20行代码实现微信聊天机器人
Jun 05 Python
完美解决TensorFlow和Keras大数据量内存溢出的问题
Jul 03 Python
Django配置跨域并开发测试接口
Nov 04 Python
Django执行源生mysql语句实现过程解析
Nov 12 Python
Python使用Kubernetes API访问集群
May 30 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入门学习的几个不错的实例代码
2008/07/13 PHP
PHP Array交叉表实现代码
2010/08/05 PHP
php计算多维数组中所有值总和的方法
2015/06/24 PHP
PHP使用自定义方法实现数组合并示例
2016/07/07 PHP
jquery日历控件实现方法分享
2014/03/07 Javascript
查找Oracle高消耗语句的方法
2014/03/22 Javascript
jquery中 $.expr使用实例介绍
2014/06/09 Javascript
JavaScript中获取样式的原生方法小结
2014/10/08 Javascript
jQuery函数map()和each()介绍及异同点分析
2014/11/08 Javascript
使用pjax实现无刷新更改页面url
2015/02/05 Javascript
javascript实现图片自动和可控的轮播切换特效
2015/04/13 Javascript
Node.js重新刷新session过期时间的方法
2016/02/04 Javascript
vue 自定义全局方法,在组件里面的使用介绍
2018/02/28 Javascript
浅谈微信小程序flex布局基础
2018/09/10 Javascript
微信小程序实现跳转的几种方式总结(推荐)
2019/04/24 Javascript
微信小程序实现点击效果
2019/06/21 Javascript
[03:53]2016国际邀请赛中国区预选赛第三日TOP10精彩集锦
2016/06/29 DOTA
python绘制铅球的运行轨迹代码分享
2017/11/14 Python
Python+matplotlib实现计算两个信号的交叉谱密度实例
2018/01/08 Python
详解python OpenCV学习笔记之直方图均衡化
2018/02/08 Python
深入理解Python 关于supper 的 用法和原理
2018/02/28 Python
浅谈python中拼接路径os.path.join斜杠的问题
2018/10/23 Python
python,Django实现的淘宝客登录功能示例
2019/06/12 Python
Python2 与Python3的版本区别实例分析
2020/03/30 Python
用CSS3写的模仿iPhone中的返回按钮
2015/04/04 HTML / CSS
HTML5移动端开发中的Viewport标签及相关CSS用法解析
2016/04/15 HTML / CSS
以色列的身体护理及家居香薰品牌:Sabon NYC
2018/02/23 全球购物
NFL Game Pass欧洲:在线观看NFL比赛直播和点播,以高清质量播放
2018/08/30 全球购物
Urban Decay官方网站:美国化妆品品牌
2020/06/04 全球购物
如何现实servlet的单线程模式
2014/08/05 面试题
请假条范文大全
2014/04/10 职场文书
2014年入党积极分子学习三中全会思想汇报
2014/09/13 职场文书
出售房屋协议书范本
2014/10/06 职场文书
浅谈Python数学建模之整数规划
2021/06/23 Python
如何vue使用el-table遍历循环表头和表体数据
2022/04/26 Vue.js
Python代码实现双链表
2022/05/25 Python