django自带的admin因为功能和样式比较简陋,所以很多程序员选择第三方后台xadmin做后台,但是xadmin的自带管理页面非常有限,有时我们也想自己定制一些功能页面,网上关于这个需求的教程实在是太少了,或者讲得实在是很模糊,经过我自己的一些摸索后现在来谈一下我总结的经验,我遇到的坑都用会在注释里写命
(此定制页面非xadmin添加插件式定制,而是添加路由,并通过view,和自定义html模板生成自定义页面)
第一步需要在左边侧栏添加需要的菜单
在adminx.py下添加以下代码# 设计左侧菜单
class GlobalSetting(object): #名称不能改
def get_site_menu(self): #名称不能改
return [
{
'title': '测试的',
'icon': 'fa fa-bar-chart-o',
'menus': (
{
'title': '测试子菜单1', #这里是你菜单的名称
'url': '/xadmin/test_view', #这里填写你将要跳转url
'icon': 'fa fa-cny' #这里是bootstrap的icon类名,要换icon只要登录bootstrap官网找到icon的对应类名换上即可
},
{
'title': '测试子菜单2',
'url': 'http://www.taobao.com',
'icon': 'fa fa-cny'
}
)
}
]
#注册你上面填写的url
from .views import TestView #从你的app的view里引入你将要写的view,你也可以另外写一个py文件,把后台的view集中在一起方便管理
xadmin.site.register_view(r'test_view/$', TestView, name='for_test')
#注册GlobalSetting
from xadmin.views import CommAdminView
xadmin.site.register(CommAdminView, GlobalSetting)
此时你重新运行一下django侧栏就会出现你自定义的菜单了
第二步写view
这个view你可以写在一个另外独立的py文件里面,这样方便以后管理,但是我这次比较懒所以直接写在app的view里面
from xadmin.views import CommAdminView
class TestView(CommAdminView):
def get(self, request):
context = super().get_context() # 这一步是关键,必须super一下继承CommAdminView里面的context,不然侧栏没有对应数据,我在这里卡了好久
title = "测试子菜单1" #定义面包屑变量
context["breadcrumbs"].append({'url': '/cwyadmin/', 'title': title}) #把面包屑变量添加到context里面
context["title"] = title #把面包屑变量添加到context里面
#下面你可以接着写你自己的东西了,写完记得添加到context里面就可以了
.........
return render(request, 'test.html', context) #最后指定自定义的template模板,并返回context
第三步自定义template模板
最后自定义template只要把xadmin的基础模板继承起来就可以愉快自己定制页面了
{% extends 'xadmin/base_site.html' %}
{% block content %}
test
{% endblock %}
大功告成~~~~
最后有人会问为什么会有个空白的框框
这个是xadmin自带的model字段筛选器的框框,但是因为是自定义页面,所以并没有需要筛选的东西,所以空了,但是完全不影响我们的使用,至于怎样取消掉它,我暂时没找到方法.
还有就是:我按照以上方法添加自定义页面后,并不如上图介绍一样顺利,而是出现了“你无权修改任何东西”的提示:如下图:
求解。。。。。。
来源:CSDN
作者:SAGGITARXM GODESS XM
链接:https://blog.csdn.net/xuezhangjun0121/article/details/91570531