在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 06 Python
Python中operator模块的操作符使用示例总结
Jun 28 Python
解决pyqt中ui编译成窗体.py中文乱码的问题
Dec 23 Python
用Python设计一个经典小游戏
May 15 Python
Python基于ThreadingTCPServer创建多线程代理的方法示例
Jan 11 Python
python实现批量按比例缩放图片效果
Mar 30 Python
python买卖股票的最佳时机(基于贪心/蛮力算法)
Jul 05 Python
python 二维矩阵转三维矩阵示例
Nov 30 Python
关于matplotlib-legend 位置属性 loc 使用说明
May 16 Python
Keras中 ImageDataGenerator函数的参数用法
Jul 03 Python
python 第三方库paramiko的常用方式
Feb 20 Python
Windows安装Anaconda3的方法及使用过程详解
Jun 11 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入门之连接mysql数据库的一个类
2012/04/21 PHP
win7+apache+php+mysql环境配置操作详解
2013/06/10 PHP
qq登录,新浪微博登录接口申请过程中遇到的问题
2014/07/22 PHP
通过php删除xml文档内容的方法
2015/01/23 PHP
PHP获取当前日期和时间及格式化方法参数
2015/05/11 PHP
完美解决phpexcel导出到xls文件出现乱码的问题
2016/10/29 PHP
ThinkPHP3.2框架操作Redis的方法分析
2019/05/05 PHP
PHP实现创建一个RPC服务操作示例
2020/02/23 PHP
javascript转换字符串为dom对象(字符串动态创建dom)
2010/05/10 Javascript
JavaScript实现的一个日期格式化函数分享
2014/12/06 Javascript
js实现商品抛物线加入购物车特效
2020/11/18 Javascript
深入理解JavaScript中的for循环
2017/02/07 Javascript
详解在express站点中使用ejs模板引擎
2017/09/21 Javascript
Vue 路由间跳转和新开窗口的方式(query、params)
2019/12/25 Javascript
vue项目打包为APP,静态资源正常显示,但API请求不到数据的操作
2020/09/12 Javascript
Python使用MySQLdb for Python操作数据库教程
2014/10/11 Python
python脚本替换指定行实现步骤
2017/07/11 Python
对python读取CT医学图像的实例详解
2019/01/24 Python
docker-py 用Python调用Docker接口的方法
2019/08/30 Python
python 表格打印代码实例解析
2019/10/12 Python
Python urllib.request对象案例解析
2020/05/11 Python
Python钉钉报警及Zabbix集成钉钉报警的示例代码
2020/08/17 Python
美国知名的家庭连锁百货商店:Boscov’s
2017/07/27 全球购物
Elemis美国官网:英国的第一豪华护肤品牌
2018/03/15 全球购物
MADE法国:提供原创设计师家具
2018/09/18 全球购物
中科前程Java笔试题
2016/11/20 面试题
医科学校毕业生自荐信
2013/11/09 职场文书
党员个人思想汇报
2013/12/28 职场文书
劳资协议书范本
2014/04/23 职场文书
环保建议书400字
2014/05/14 职场文书
毕业生学校推荐信范文
2014/05/21 职场文书
离婚案件答辩状
2015/05/22 职场文书
2019年健身俱乐部的创业计划书
2019/08/26 职场文书
Redis集群新增、删除节点以及动态增加内存的方法
2021/09/04 Redis
python 远程执行命令的详细代码
2022/02/15 Python
windows11选中自动复制怎么开启? Win11自动复制所选内容的方法
2022/07/23 数码科技