在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正则用法的简单实例
Jun 21 Python
Python实现邮件的批量发送的示例代码
Jan 23 Python
Python网络编程之TCP与UDP协议套接字用法示例
Feb 02 Python
TensorFLow用Saver保存和恢复变量
Mar 10 Python
PyQt弹出式对话框的常用方法及标准按钮类型
Feb 27 Python
使用python判断jpeg图片的完整性实例
Jun 10 Python
python读取目录下所有的jpg文件,并显示第一张图片的示例
Jun 13 Python
Python 中如何实现参数化测试的方法示例
Dec 10 Python
python seaborn heatmap可视化相关性矩阵实例
Jun 03 Python
python 在sql语句中使用%s,%d,%f说明
Jun 06 Python
Python wordcloud库安装方法总结
Dec 31 Python
python中的None与NULL用法说明
May 25 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+jQuery 注册模块的改进(三):更新到Smarty3.1
2014/10/14 PHP
PHP 实现类似js中alert() 提示框
2015/03/18 PHP
分享一个漂亮的php验证码类
2016/09/29 PHP
PHP简单实现循环链表功能示例
2017/11/10 PHP
JavaScript 数组的 uniq 方法
2008/01/23 Javascript
jQuery获取节点和子节点文本的方法
2014/07/22 Javascript
jquery获取radio值(单选组radio)
2014/10/16 Javascript
javascript实现dom动态创建省市纵向列表菜单的方法
2015/05/14 Javascript
jquery遍历json对象集合详解
2016/05/18 Javascript
两种JavaScript的AES加密方式(可与Java相互加解密)
2016/08/02 Javascript
JavaScript中获取时间的函数集
2016/08/16 Javascript
AngularJS 最常用的八种功能(基础知识)
2017/06/26 Javascript
微信小程序picker组件下拉框选择input输入框的实例
2017/09/20 Javascript
three.js加载obj模型的实例代码
2017/11/10 Javascript
用vue写一个仿简书的轮播图的示例代码
2018/03/13 Javascript
使用json-server简单完成CRUD模拟后台数据的方法
2018/07/12 Javascript
TypeScript基础入门教程之三重斜线指令详解
2018/10/22 Javascript
JS动态图片的实现方法完整示例
2020/01/13 Javascript
node创建Vue项目步骤详解
2020/03/06 Javascript
快速解决Vue、element-ui的resetFields()方法重置表单无效的问题
2020/08/12 Javascript
Webpack5正式发布,有哪些新特性
2020/10/12 Javascript
Python cookbook(字符串与文本)针对任意多的分隔符拆分字符串操作示例
2018/04/19 Python
如何用python写一个简单的词法分析器
2018/12/18 Python
python设置环境变量的作用和实例
2019/07/09 Python
程序员的七夕用30行代码让Python化身表白神器
2019/08/07 Python
简单了解python filter、map、reduce的区别
2020/01/14 Python
IWOOT美国:新奇的小玩意
2018/04/27 全球购物
Spartoo美国:欧洲排名第一的在线时装零售商
2019/12/12 全球购物
美国饼干礼物和美食甜点购买网站:Cheryl’s
2020/05/28 全球购物
网络安全方面的面试题
2016/01/07 面试题
js正则匹配markdown里的图片标签的实现
2021/03/24 Javascript
新郎答谢词
2015/01/04 职场文书
班组长如何制订适合本班组的工作计划?
2019/07/10 职场文书
动画「进击的巨人」第86话播出感谢绘公开
2022/03/21 日漫
解决IIS7下无法绑定https主机的问题
2022/04/29 Servers
python神经网络 使用Keras构建RNN训练
2022/05/04 Python