在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 相关文章推荐
Flask框架学习笔记(一)安装篇(windows安装与centos安装)
Jun 25 Python
Python import自定义模块方法
Feb 12 Python
详解Python中使用base64模块来处理base64编码的方法
Jul 01 Python
Python 逐行分割大txt文件的方法
Oct 10 Python
python实现多线程网页下载器
Apr 15 Python
python 删除字符串中连续多个空格并保留一个的方法
Dec 22 Python
python利用插值法对折线进行平滑曲线处理
Dec 25 Python
Python实现 PS 图像调整中的亮度调整
Jun 28 Python
python字符串格式化方式解析
Oct 19 Python
Python中低维数组填充高维数组的实现
Dec 02 Python
python利用Excel读取和存储测试数据完成接口自动化教程
Apr 30 Python
python实现学生成绩测评系统
Jun 22 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中的外观模式facade pattern
2018/02/05 PHP
PHP crypt()函数的用法讲解
2019/02/15 PHP
JavaScript replace(rgExp,fn)正则替换的用法
2010/03/04 Javascript
JS鼠标滑过图片时切换图片实现思路
2013/09/12 Javascript
document.addEventListener使用介绍
2014/03/07 Javascript
jQuery学习笔记之jQuery原型属性和方法
2014/06/09 Javascript
让浏览器DOM元素最后加载的js方法
2014/07/29 Javascript
MVVM模式中ViewModel和View、Model有什么区别?
2015/06/19 Javascript
javascript中错误使用var造成undefined
2016/03/31 Javascript
基于jPlayer三分屏的制作方法
2016/12/21 Javascript
原生js实现水平方向无缝滚动
2017/01/10 Javascript
javascript实现页面滚屏效果
2017/01/17 Javascript
JavaScript控制输入框中只能输入中文、数字和英文的方法【基于正则实现】
2017/03/03 Javascript
Vue项目中最新用到的一些实用小技巧
2018/11/06 Javascript
node基于async/await对mysql进行封装
2019/06/20 Javascript
解决vue-cli 打包后自定义动画未执行的问题
2019/11/12 Javascript
浅谈Webpack4 Tree Shaking 终极优化指南
2019/11/18 Javascript
在Python中使用SimpleParse模块进行解析的教程
2015/04/11 Python
python脚本替换指定行实现步骤
2017/07/11 Python
在Python中定义一个常量的方法
2018/11/10 Python
python爬虫获取小区经纬度以及结构化地址
2018/12/30 Python
对dataframe数据之间求补集的实例详解
2019/01/30 Python
wxpython+pymysql实现用户登陆功能
2019/11/19 Python
python利用faker库批量生成测试数据
2020/10/15 Python
解决pip安装tensorflow中出现的no module named tensorflow.python 问题方法
2021/02/20 Python
html5 input元素新特性_动力节点Java学院整理
2017/07/06 HTML / CSS
HTML5 Video标签的属性、方法和事件汇总介绍
2015/04/24 HTML / CSS
高街生活方式全球在线商店:AZBRO
2017/08/26 全球购物
英国空调、除湿机和通风设备排名第一:Air Con Centre
2019/02/25 全球购物
校长岗位职责
2013/11/26 职场文书
暑期培训班招生方案
2014/08/26 职场文书
生活小常识广播稿
2014/09/16 职场文书
大一工商管理职业生涯规划:有梦最美,行动相随
2014/09/18 职场文书
2015年艾滋病宣传活动总结
2015/03/27 职场文书
我的1919观后感
2015/06/03 职场文书
CSS filter 有什么神奇用途
2021/05/25 HTML / CSS