当前位置: 首页 > 工具软件 > SimpleUI > 使用案例 >

simpleui,simplepro的django菜单过滤

钮巴英
2023-12-01

自定义菜单,必须要有codename

自定义菜单权限

在settings.py下的

修改项目下的settings.py文件
SIMPLEUI_CONFIG = {
    'system_keep': False,#关闭系统默认菜单,以免混乱
    'dynamic': True,#打开加载
    'menus': [{
        'name': '权限管理',
        'codename': 'admin',
        'models': [{
            'name':'用户',
            'url':'/admin/auth/user',
            'codename': 'admin.user',
        },{
            'name':'组',
            'url':'/admin/auth/group',
            'codename': 'admin.group',

        }]
    },{
        'name': '我的',
        'url': 'https://baidu.com',
        'codename': 'app1.view_test',
        'models': [{
            'name': '我的',
            'url': 'https://baidu.com',
            'codename': 'app1.view_test',
            'models': [{
                'name': '我的',
                'url': 'https://baidu.com',
                'codename': 'app1.view_test',
            }]
        }]
    }]
}

在源码包下的

venv\Lib\site-packages\simpleui\templatetags\simpletags.py
    if config.get('dynamic', False) is True:
        config = _import_reload(_get_config('DJANGO_SETTINGS_MODULE')).SIMPLEUI_CONFIG
        
	#查找用户权限
	user=context['request'].user
	#超级用户跳过权限
    if user.is_superuser:
        pass
    else:
    	#一级菜单
        data_list=[]
        for x in config['menus']:
            if x['codename'] not in user.get_all_permissions():
                pass
            else:
                if 'models' in x:
                	#二级菜单
                    data_list2 = []
                    for m in x['models']:
                        if m['codename'] not in user.get_all_permissions():
                            pass
                        else:
                        	#三级菜单
                            data_list3 = []
                            print(m)
                            if 'models' in m:
                                for m3 in m['models']:
                                    if m3['codename'] not in user.get_all_permissions():
                                        pass
                                    else:
                                        data_list3.append(m3)
                                m['models']=data_list3
                            data_list2.append(m)
                    x['models']=data_list2
                data_list.append(x)
        config['menus']=data_list
        #权限配置完毕
        
	app_list = context.get('app_list')
    for app in app_list:
        _models = [
            {
                'name': m.get('name'),
                'icon': get_icon(m.get('object_name'), unicode_to_str(m.get('name'))),
                'url': m.get('admin_url'),
                'addUrl': m.get('add_url'),
                'breadcrumbs': [{
                    'name': app.get('name'),
                    'icon': get_icon(app.get('app_label'), app.get('name'))
                }, {
                    'name': m.get('name'),
                    'icon': get_icon(m.get('object_name'), unicode_to_str(m.get('name')))
                }]
            }

            for m in app.get('models')
        ] if app.get('models') else []
这样一来每个用户有权限才显示菜单了

有兴趣可加qun 623391511

 类似资料: