在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中sets模块的用法实例
Sep 30 Python
python按照多个字符对字符串进行分割的方法
Mar 17 Python
Python爬虫抓取代理IP并检验可用性的实例
May 07 Python
Python处理菜单消息操作示例【基于win32ui模块】
May 09 Python
对Python中9种生成新对象的方法总结
May 23 Python
pycharm修改file type方式
Nov 19 Python
详解pycharm连接不上mysql数据库的解决办法
Jan 10 Python
python GUI库图形界面开发之PyQt5控件数据拖曳Drag与Drop详细使用方法与实例
Feb 27 Python
Mac中PyCharm配置Anaconda环境的方法
Mar 04 Python
python 图像插值 最近邻、双线性、双三次实例
Jul 05 Python
python利用xpath爬取网上数据并存储到django模型中
Feb 26 Python
python异步的ASGI与Fast Api实现
Jul 16 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代码书写习惯优化小结
2013/06/20 PHP
php中debug_backtrace、debug_print_backtrace和匿名函数用法实例
2014/12/01 PHP
PHP输出九九乘法表代码实例
2015/03/27 PHP
PHP中addslashes与mysql_escape_string的区别分析
2016/04/25 PHP
Yii2实现ajax上传图片插件用法
2016/04/28 PHP
Jquery 例外被抛出且未被接住原因介绍
2013/09/04 Javascript
select多选 multiple的使用示例
2014/06/16 Javascript
JQuery实现防止退格键返回的方法
2015/02/12 Javascript
JavaScript中的getTimezoneOffset()方法使用详解
2015/06/10 Javascript
jQuery插件开发精品教程(让你的jQuery更上一个台阶)
2015/11/07 Javascript
JavaScript 正则表达式中global模式的特性
2016/02/25 Javascript
利用jquery正则表达式在页面验证url网址输入是否正确
2017/04/04 jQuery
jQuery插件DataTables分页开发心得体会
2017/08/22 jQuery
jfinal与bootstrap的登出实战详解
2017/11/27 Javascript
Vue 页面跳转不用router-link的实现代码
2018/04/12 Javascript
详解vue中async-await的使用误区
2018/12/05 Javascript
this.$toast() 了解一下?
2019/04/18 Javascript
Node.js API详解之 dgram模块用法实例分析
2020/06/05 Javascript
python基于pygame实现响应游戏中事件的方法(附源码)
2015/11/11 Python
Python数据可视化编程通过Matplotlib创建散点图代码示例
2017/12/09 Python
完美解决Python 2.7不能正常使用pip install的问题
2018/06/12 Python
Python 使用 attrs 和 cattrs 实现面向对象编程的实践
2019/06/12 Python
美国最受欢迎的童装品牌之一:The Children’s Place
2016/07/23 全球购物
世界最大的私人旅行指南出版商:孤独星球
2016/08/23 全球购物
英国领先的新鲜松露和最好的松露产品供应商:TruffleHunter
2019/08/26 全球购物
工作人员思想汇报
2014/01/09 职场文书
生日寄语大全
2014/04/08 职场文书
党的群众路线教育学习材料
2014/05/12 职场文书
城市规划应届生推荐信
2014/09/08 职场文书
2014年行政后勤工作总结
2014/12/06 职场文书
2015应届毕业生求职信范文
2015/03/20 职场文书
感恩教师主题班会
2015/08/12 职场文书
2019年入党思想汇报
2019/03/25 职场文书
如何做好员工培训计划?
2019/07/09 职场文书
Nginx域名转发https访问的实现
2021/03/31 Servers
nginx共享内存的机制详解
2022/03/21 Servers