暂无说说

xadmin自定义页面

django jiajun 5个月前 (10-15) 238次浏览 0个评论 扫描二维码

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 字段筛选器的框框,但是因为是自定义页面,所以并没有需要筛选的东西,所以空了,但是完全不影响我们的使用,至于怎样取消掉它,我暂时没找到方法,希望有知道的小伙伴告诉一下我。

喜欢 (10)

您必须 登录 才能发表评论!