在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模拟登录百度代码分享(获取百度贴吧等级)
Dec 27 Python
Python实现简单过滤文本段的方法
May 24 Python
详解python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别
Jun 23 Python
基于pandas数据样本行列选取的方法
Apr 20 Python
python实现输入数字的连续加减方法
Jun 22 Python
Python格式化输出字符串方法小结【%与format】
Oct 29 Python
python模糊图片过滤的方法
Dec 14 Python
使用python的turtle绘画滑稽脸实例
Nov 21 Python
python支持多线程的爬虫实例
Dec 21 Python
pycharm实现在虚拟环境中引入别人的项目
Mar 09 Python
Python3 selenium 实现QQ群接龙自动化功能
Apr 17 Python
你需要学会的8个Python列表技巧
Jun 24 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 max_execution_time执行时间问题
2011/07/17 PHP
php curl基本操作详解
2013/07/23 PHP
PHP获取数组中指定的一列实例
2017/12/27 PHP
Laravel关联模型中过滤结果为空的结果集(has和with区别)
2018/10/18 PHP
实例讲解PHP表单验证功能
2019/02/15 PHP
PHP封装类似thinkphp连贯操作数据库Db类与简单应用示例
2019/05/08 PHP
js修改地址栏URL参数解决url参数问题
2012/12/15 Javascript
jQuery:节点(插入,复制,替换,删除)操作
2013/03/04 Javascript
JavaScript fontsize方法入门实例(按照指定的尺寸来显示字符串)
2014/10/17 Javascript
JavaScript实现图片轮播组件代码示例
2016/11/22 Javascript
zTree获取当前节点的下一级子节点数实例
2017/09/05 Javascript
node.js基于express使用websocket的方法
2017/11/09 Javascript
vue刷新和tab切换实例
2018/02/11 Javascript
vue 双向数据绑定的实现学习之监听器的实现方法
2018/11/30 Javascript
使用typescript改造koa开发框架的实现
2020/02/04 Javascript
JavaScript原生数组函数实例汇总
2020/10/14 Javascript
[02:55]2018DOTA2国际邀请赛勇士令状不朽珍藏Ⅲ饰品一览
2018/08/01 DOTA
[54:26]完美世界DOTA2联赛PWL S3 Forest vs Rebirth 第一场 12.10
2020/12/12 DOTA
python读写ini文件示例(python读写文件)
2014/03/25 Python
Python基本语法经典教程
2016/03/11 Python
使用python和pygame绘制繁花曲线的方法
2018/02/24 Python
每天迁移MySQL历史数据到历史库Python脚本
2018/04/13 Python
Python代码缩进和测试模块示例详解
2018/05/07 Python
Python multiprocessing多进程原理与应用示例
2019/02/28 Python
Python迭代器模块itertools使用原理解析
2019/12/11 Python
tensorflow 初始化未初始化的变量实例
2020/02/06 Python
TensorFlow2.1.0最新版本安装详细教程
2020/04/08 Python
python多进程 主进程和子进程间共享和不共享全局变量实例
2020/04/25 Python
css3.0 图形构成实例练习一
2013/03/19 HTML / CSS
Charlotte Tilbury英国官网:英国彩妆品牌
2017/05/26 全球购物
英国打印机墨水和碳粉商店:Printerinks
2017/06/30 全球购物
给海归自荐信的建议
2013/12/13 职场文书
《湘夫人》教学反思
2014/02/21 职场文书
党建工作经验交流材料
2014/05/25 职场文书
python异步的ASGI与Fast Api实现
2021/07/16 Python
Java移除无效括号的方法实现
2021/08/07 Java/Android