在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中何种情况下需要使用断言
Apr 01 Python
python中常用的九种预处理方法分享
Sep 11 Python
Python使用dict.fromkeys()快速生成一个字典示例
Apr 24 Python
python求最大值,不使用内置函数的实现方法
Jul 09 Python
python3 pillow模块实现简单验证码
Oct 31 Python
Python解压 rar、zip、tar文件的方法
Nov 19 Python
Python Pillow.Image 图像保存和参数选择方式
Jan 09 Python
tensorflow 实现自定义梯度反向传播代码
Feb 10 Python
Python实现企业微信机器人每天定时发消息实例
Feb 25 Python
jupyter实现重新加载模块
Apr 16 Python
新建文件时Pycharm中自动设置头部模板信息的方法
Apr 17 Python
python tkinter模块的简单使用
Apr 07 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
古巴咖啡 Cubita琥爵咖啡 独特的加勒比海风味咖啡
2021/03/06 新手入门
默默简单的写了一个模板引擎
2007/01/02 PHP
php中cookie的作用域
2008/03/27 PHP
PHP中用正则表达式清除字符串的空白
2011/01/17 PHP
Apache2中实现多网站域名绑定的实现方法
2011/06/01 PHP
PHP基础知识介绍
2013/09/17 PHP
PHP MySql增删改查的简单实例
2016/06/21 PHP
PHP Callable强制指定回调类型的方法
2016/08/30 PHP
jQuery 设置 CSS 属性示例介绍
2014/01/16 Javascript
JS实现的自定义网页拖动类
2015/11/06 Javascript
JavaScript实现自动生成网页元素功能(按钮、文本等)
2015/11/21 Javascript
详解JavaScript中Hash Map映射结构的实现
2016/05/21 Javascript
javascript 常用验证函数总结
2016/06/28 Javascript
网页瀑布流布局jQuery实现代码
2016/10/21 Javascript
在vue-cli中组件通信的方法
2017/12/16 Javascript
vue-cli webpack 引入jquery的方法
2018/01/10 jQuery
nodejs中函数的调用实例详解
2018/10/31 NodeJs
uniapp实现可滑动选项卡
2020/10/21 Javascript
Python中处理字符串的相关的len()方法的使用简介
2015/05/19 Python
python获取指定路径下所有指定后缀文件的方法
2015/05/26 Python
实例解析Python中的__new__特殊方法
2016/06/02 Python
Python3 模块、包调用&amp;路径详解
2017/10/25 Python
python 列表,数组,矩阵两两转换tolist()的实例
2018/04/04 Python
利用Django-environ如何区分不同环境
2018/08/26 Python
python搜索包的路径的实现方法
2019/07/19 Python
解决django-xadmin列表页filter关联对象搜索问题
2019/11/15 Python
Python生成个性签名图片获取GUI过程解析
2019/12/16 Python
python 6.7 编写printTable()函数表格打印(完整代码)
2020/03/25 Python
自定义实现 PyQt5 下拉复选框 ComboCheckBox的完整代码
2020/03/30 Python
python安装mysql的依赖包mysql-python操作
2021/01/01 Python
英国著名书店:Foyles
2018/12/01 全球购物
《木笛》教学反思
2014/03/01 职场文书
教师对学生的评语
2014/04/28 职场文书
2014年检验科工作总结
2014/11/22 职场文书
银行安全保卫工作总结
2015/08/10 职场文书
pycharm部署django项目到云服务器的详细流程
2021/06/29 Python