时间:2021-05-22
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中添加自定义视图的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
在Django框架中,自带一个后台管理页面admin,这个管理页面很全,但是,有些并不是我们需要的,所以我们可以根据admin的实现流程来自定义自己的需求,即根
前言在我们的实际应用中,经常需要用到自定义控件,比如自定义圆形头像,自定义计步器等等。但有时我们不仅需要自定义控件,举个例子,FloatingActionBut
自定义控件在android中无处不见,自定义控件给了我们很大的方便。比如说,一个视图为imageview,imagebutton,textview等诸多控件的组
为了添加自定义按钮,按官方文档分4步走:1、先定义工具类app/Admin/Extensions/Tools/ShowArtwork.php:url=$url;
帝国CMS7.5版在原来版本支持自定义后台目录基础上(可随时任意重命名admin目录,无需任何设置),还新增了支持自定义后台登录文件,双重自定义,安全性更高。帝