Developer 2024 🎇限时优惠进行中,现在购买立即享受

现在购买

SimpleUI自定义菜单后的菜单控制

avatar底层群员-吴彦祖Pro
3月23日778次阅读

在使用自定义菜单栏以后Django的默认权限管理菜单栏就不生效了,这时候想做到隐藏菜单栏需要设置入站中间件来控制。

菜单栏引用的是文档里的 simpleUI自定义菜单

下面是操作实例

  1. 先在admin所在的app目录下新建一个middleware.py文件
from django.conf import settings
from django.utils.deprecation import MiddlewareMixin


class FilterMenu(MiddlewareMixin):
    def process_request(self, request):  # noqa
        if "/admin/" in request.path:
            print("访问地址: ", request.path)
            print("登陆用户: ", request.user)
            groups = request.user.groups.all()
            print("用户组: ", groups)
          # settings.SIMPLEUI_CONFIG['menu_display'] = []
            for group in groups:
          # 可以根据用户组来进行菜单栏管理,可以设置个字典进行配置
          # 用户组名和菜单名对应,然后 settings.SIMPLEUI_CONFIG['menu_display'] .append(dict_menu[group.name])就行
                print(group.name)
          # 这里是根据用户名指定不同的菜单
            if request.user.username == 'user123':
                settings.SIMPLEUI_CONFIG['menu_display'] = ['Simpleui', '测试']

                print(settings.SIMPLEUI_CONFIG)
  1. 把中间件加入到settings.py
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'app1.middleware.FilterMenu', # 放在AuthenticationMiddleware后面都行,这里的文件名地址注意下就可以了
]

好了,就是这么简单。 如果要对二级和三级菜单进行管理,那就得对 settings.SIMPLEUI_CONFIG['menus'] 进行重新赋值,照着菜单栏的数据结构赋值就行

发布评论
登录后发表内容
5个评论