在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 Mysql数据库操作 Perl操作Mysql数据库
Jan 12 Python
使用scrapy实现爬网站例子和实现网络爬虫(蜘蛛)的步骤
Jan 23 Python
python正则表达式re模块详细介绍
May 29 Python
Zabbix实现微信报警功能
Oct 09 Python
Python使用Turtle模块绘制五星红旗代码示例
Dec 11 Python
python实现搜索文本文件内容脚本
Jun 22 Python
Python OpenCV对本地视频文件进行分帧保存的实例
Jan 08 Python
python将时分秒转换成秒的实例
Dec 07 Python
pytorch1.0中torch.nn.Conv2d用法详解
Jan 10 Python
opencv python在视屏上截图功能的实现
Mar 05 Python
plt.figure()参数使用详解及运行演示
Jan 08 Python
python内置模块之上下文管理contextlib
Jun 14 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/11/27 PHP
简单实用的PHP文本缓存类实例
2019/03/22 PHP
phpStorm2020 注册码
2020/09/17 PHP
php与js的区别是什么
2013/08/05 Javascript
使用javascript创建快捷方式的简单实例
2013/08/09 Javascript
用js的for循环获取radio选中的值
2013/10/21 Javascript
jquery加载图片时以淡入方式显示的方法
2015/01/14 Javascript
JavaScript实现横向滑出的多级菜单效果
2015/10/09 Javascript
jQuery 1.9.1源码分析系列(十三)之位置大小操作
2015/12/02 Javascript
AngularJS中的$watch(),$digest()和$apply()区分
2016/04/04 Javascript
nodejs中向HTTP响应传送进程的输出
2017/03/19 NodeJs
JavaScript hasOwnProperty() 函数实例详解
2017/08/04 Javascript
vue实现动态添加数据滚动条自动滚动到底部的示例代码
2018/07/06 Javascript
详解Vue中使用插槽(slot)、聚类插槽
2019/04/12 Javascript
Vue+Typescript中在Vue上挂载axios使用时报错问题
2019/08/07 Javascript
JavaScript前端实现压缩图片功能
2020/03/06 Javascript
jquery实现拖拽添加元素功能
2020/12/01 jQuery
python 中的列表解析和生成表达式
2011/03/10 Python
Python contextlib模块使用示例
2015/02/18 Python
Python3计算三角形的面积代码
2017/12/18 Python
Python全局变量与局部变量区别及用法分析
2018/09/03 Python
pygame游戏之旅 python和pygame安装教程
2018/11/20 Python
python监控进程状态,记录重启时间及进程号的实例
2019/07/15 Python
详解Python 4.0 预计推出的新功能
2019/07/26 Python
Python开发之基于模板匹配的信用卡数字识别功能
2020/01/13 Python
Python中文分词库jieba,pkusegwg性能准确度比较
2020/02/11 Python
使用wxpy实现自动发送微信消息功能
2020/02/28 Python
浅析python函数式编程
2020/09/26 Python
Python 下载Bing壁纸的示例
2020/09/29 Python
IE兼容css3圆角的实现代码
2011/07/21 HTML / CSS
群众路线教育党课主持词
2014/04/01 职场文书
学校班班通实施方案
2014/06/11 职场文书
党的群众路线教育实践活动党员个人整改措施
2014/10/27 职场文书
招标保密承诺书
2015/01/20 职场文书
2015年医院后勤工作总结
2015/05/20 职场文书
公司酒会主持词
2015/07/02 职场文书