在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中__call__内置函数用法实例
Jun 04 Python
Python SQLite3数据库日期与时间常见函数用法分析
Aug 14 Python
Linux-ubuntu16.04 Python3.5配置OpenCV3.2的方法
Apr 02 Python
Python切片操作去除字符串首尾的空格
Apr 22 Python
PyCharm安装Markdown插件的两种方法
Jun 24 Python
PyQt+socket实现远程操作服务器的方法示例
Aug 22 Python
Django框架HttpResponse对象用法实例分析
Nov 01 Python
有关Tensorflow梯度下降常用的优化方法分享
Feb 04 Python
Python Tornado核心及相关原理详解
Jun 24 Python
django美化后台django-suit的安装配置操作
Jul 12 Python
详解python中的三种命令行模块(sys.argv,argparse,click)
Dec 15 Python
python读取图片颜色值并生成excel像素画的方法实例
Feb 19 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+SQL 注入攻击的技术实现以及预防办法
2011/01/27 PHP
php的mkdir()函数创建文件夹比较安全的权限设置方法
2014/07/28 PHP
smarty中英文多编码字符截取乱码问题解决方法
2014/10/28 PHP
PHP基于timestamp和nonce实现的防止重放攻击方案分析
2019/07/26 PHP
再说AutoComplete自动补全之实现原理
2011/11/05 Javascript
ie8下修改input的type属性报错的解决方法
2014/09/16 Javascript
Bootstrap入门书籍之(五)导航条、分页导航
2016/02/17 Javascript
基于Bootstrap使用jQuery实现简单可编辑表格
2016/05/04 Javascript
微信小程序 wx.login解密出现乱码的问题解决办法
2017/03/10 Javascript
jackson解析json字符串,首字母大写会自动转为小写的方法
2017/12/22 Javascript
Vue高版本中一些新特性的使用详解
2018/09/25 Javascript
[41:17]VG vs Optic 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python实现竖排打印传单手机号码易撕条
2015/03/16 Python
Python实现PS滤镜的万花筒效果示例
2018/01/23 Python
Python基于TCP实现会聊天的小机器人功能示例
2018/04/09 Python
python 实现判断ip连通性的方法总结
2018/04/22 Python
Python中.join()和os.path.join()两个函数的用法详解
2018/06/11 Python
python list转矩阵的实例讲解
2018/08/04 Python
一百行python代码将图片转成字符画
2021/02/19 Python
python处理两种分隔符的数据集方法
2018/12/12 Python
详解Python3 pickle模块用法
2019/09/16 Python
python隐藏类中属性的3种实现方法
2019/12/19 Python
python实现按关键字筛选日志文件
2019/12/24 Python
Python递归调用实现数字累加的代码
2020/02/25 Python
解决Jupyter Notebook开始菜单栏Anaconda下消失的问题
2020/04/13 Python
Django使用Profile扩展User模块方式
2020/05/14 Python
python爬虫爬取图片的简单代码
2021/01/18 Python
澳大利亚购买健身器材网站:Gym Direct
2019/12/19 全球购物
现代化办公人员工作的自我评价
2013/10/16 职场文书
班主任新年寄语
2014/04/04 职场文书
农业开发项目建议书
2014/05/16 职场文书
美术课外活动总结
2014/07/08 职场文书
相亲活动方案
2014/08/26 职场文书
2019入党申请书格式
2019/06/25 职场文书
Win11电脑显示本地时间与服务器时间不一致怎么解决?
2022/04/05 数码科技
OpenCV项目实践之停车场车位实时检测
2022/04/11 Python