自定义菜单,必须要有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