来自https://blog.csdn.net/qq_35753140/article/details/84881757

 

django admin提供了完善的用户管理和数据模型管理,方便实用。研究了一下在admin里面添加自己的页面。

在admin.py里继承django.contrib.admin.ModelAdmin基类

class FaceAdmin(admin.ModelAdmin):
  • 1

然后在里面写自己的视图处理函数。基类里面的save_modeldelete_model函数可以做数据对象的新建和删除的预处理和后处理。自建的函数如果要redirect到自己建的view,反向映射要包含admin:,写成

return HttpResponseRedirect(reverse('admin:manage_face_image', args=(face_id,)))
  • 1

然后添加一个获取路由的函数,把自己的路由添加上

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

最后把子类和数据模型一起注册成admin的站点:

admin.site.register(Face, FaceAdmin)
  • 1

这样就可以通过/admin/app/face/5/manage_face_image/这个url来访问自己的视图了。详细说一下,admin是指admin站点,app是指自己的djangoapp,face是数据模型。

自定义视图的模板在最顶上继承admin_site的基模板

{% extends "admin/base_site.html" %}
  • 1

但是会发现右上角没有正常的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中添加自定义视图的更多相关文章

  1. Django Admin中增加导出Excel功能

    参考: https://www.cnblogs.com/yoyo008/p/9232805.html 在使用Django Admin时, 对于列表我们有时需要提供数据导出功能, 如下图: 在Djang ...

  2. Django Admin中增加导出CSV功能

    参考: https://books.agiliq.com/projects/django-admin-cookbook/en/latest/export.html 在使用Django Admin时, ...

  3. Django框架中的视图和模板

    视图views django中的视图就是用来定义函数来处理一些逻辑的核心地方. django中通过urls来建立路径跟views中的视图函数的映射关系. urls中的映射关系 ''' urlpatte ...

  4. ckeditor django admin 中使用

    ckeditor settings配置 ############ # CKEDITOR # ############ MEDIA_ROOT = os.path.join(BASE_DIR, 'medi ...

  5. django admin 中实现word文档下载

    为了实现此功能,需要用到的知识点: (1)django  admin  自定义字段:   参考:http://www.cnblogs.com/wumingxiaoyao/p/6928297.html ...

  6. Django admin 中抛出 'WSGIRequest' object has no attribute 'user'的错误

    这是Django版本的问题,1.9之前,中间件的key为MIDDLEWARE_CLASSES, 1.9之后,为MIDDLEWARE.所以在开发环境和其他环境的版本不一致时,要特别小心,会有坑. 将se ...

  7. django admin中保存添加的数据提示need string or buffer, int found

    原因 def __unicode__(self): return unicode(self.pk) 此处如果没有unicode就会报这个错误,原因就是编码错误 以为是文件开始没有加utf-8导致的,然 ...

  8. 01: 重写Django admin

    目录: 1.1 重写Django admin项目各文件作用# 1.2 重写Django admin用户认证 1.3 将要显示的表注册到我们自己的kind_admin.py中 1.4 项目首页:显示注册 ...

  9. django admin 使用

    Django admin 中一些常用的设置 Django自带的后台管理是Django明显特色之一,可以让我们快速便捷管理数据.后台管理可以在各个app的admin.py文件中进行控制.以下是我最近摸索 ...

随机推荐

  1. RMQ区间最大值与最小值查询

    RMQ复杂度:建表$O\left ( nlgn \right ) $,查询$O\left ( 1 \right )$ ll F_Min[maxn][20],F_Max[maxn][20]; void ...

  2. centos6.8 安装jenkins

    1.使用yum安装java环境 #查看CentOS自带JDK是否已安装yum list installed |grep java #查看yum库中的Java安装包yum -y list java*#以 ...

  3. golang项目练习

    一.记账系统 1.该软件能够记录收入.支出,并能够打印收支明细表 2. 代码 package main import ( . "fmt" ) func menu() string{ ...

  4. javascript闭包以及闭包的作用

    什么是闭包?———>是一个函数,一个可以访问其他函数内部数据的函数. 栗子一: function foo() { var a = 1; } function fn() { console.log ...

  5. xml 解析参考文档

    https://www.cnblogs.com/a1656344531/archive/2012/11/28/2792863.html

  6. randperm

    randperm是matlab函数,功能是随机打乱一个数字序列. 函数功能:随机打乱一个数字序列. 语法格式: y = randperm(n) y是把1到n这些数随机打乱得到的一个数字序列. 程序示例 ...

  7. Oracle表之间关联更新

    经常会遇到一个表需要根据另一个表数据来更新数据,总结了核心的sql脚本命令如下: A表如下x        y--------------ka       dakb       dbkc       ...

  8. docker-lnmp dockerfile

    code: FROM php:7.1.26-fpm WORKDIR /usr/share/nginx/html # bcmath pdo_mysql intl gd zip opcache xdebu ...

  9. CCF201812-3 CIDR合并

    按题意模拟即可...主要CCF吞代码... #include<bits/stdc++.h> #define pb push_back #define mp make_pair #defin ...

  10. linux查看主板型号、CPU、显卡、硬盘等信息

    系统 uname -a # 查看内核/操作系统/CPU信息 head -n 1 /etc/issue # 查看操作系统版本 cat /proc/cpuinfo # 查看CPU信息 hostname # ...