django -- xadmin 自定义右侧菜单栏


时间的沙漏沉淀着无法逃离的过往,记忆的双手总是拾起那些明媚的忧伤


说明

xadmin 默认的菜单栏包含了 Reversion,权限管理等选项,但是一般是用不上的,于是想着办法将其去掉,可以被逼着去翻了源码才搞定了


修改

源码解析地址

主要用到的是视图类 CommAdminViewget_site_menu()get_nav_menu() 方法,前一个是自定义增加菜单栏的,后一个是将增加的菜单栏合并到原来的菜单栏中并返回新的菜单栏集合,思路就是将返回的新集合只包含新增的菜单栏

# adminx.py
class GlobalSetting(object):
    site_title = "Pinsily.blog"
    site_footer = 'pinsily blog'
    # menu_style = 'accordion'

    # 自定义新增菜单栏
    def get_site_menu(self):
        return (
            {'title': 'Blog', 'perm': self.get_model_perm(Article, 'change'), 'menus': (
                {'title': 'Article', 'url': self.get_model_url(
                    Article, 'changelist')},
                {'title': 'Category', 'url': self.get_model_url(
                    Category, 'changelist')},
                {'title': 'BlogComment', 'url': self.get_model_url(
                    BlogComment, 'changelist')},
                {'title': 'Tag', 'url': self.get_model_url(Tag, 'changelist')},
                {'title': 'OneModel', 'url': self.get_model_url(
                    OneModel, 'changelist')},
            )},
        )

    def get_nav_menu(self):
        # 直接返回新增的菜单栏,源码中还有很大一部分的合并功能
        site_menu = list(self.get_site_menu() or [])
        return site_menu


xadmin.site.register(xadmin.views.CommAdminView, GlobalSetting)