一. 正文内容时,左侧一级菜单不关闭
1.给permission表加一个字段
Pid :自关联 让展示作为父权限,删该查作为子权限
2.改变permission_list的结构
1 for item in permissions: 2 # 构建权限列表 3 permission_list.append({ 4 "url":item["permissions__url"], 5 "pk":item["permissions__pk"], 6 "pid":item["permissions__pid"], 7 "title":item["permissions__title"], 8 })
并注入session
更改中间件:数据类型变了,使用时也要变:
1 for item in permission_list: 2 reg="^%s$"%item["url"] 3 ret=re.search(reg,current_path)
全局request加一个属性
1 for item in permission_list: 2 reg="^%s$"%item["url"] 3 ret=re.search(reg,current_path) 4 if ret: 5 show_id=item["pid"] or item["pk"] 6 request.show_id=show_id 7 return None
用到了pk,添加pk
实现效果:
点击”添加缴费记录时”,左侧相对应的一级菜单也不会关闭
所有Session 登录session User_id=当前登录用户user表的主键 权限列表 permission_list=[ {'url': '/customer/list/', 'pk': 1, 'pid': None, 'title': '客户列表'}, {'url': '/customer/add/', 'pk': 2, 'pid': 1, 'title': '添加客户'}, {'url': '/customer/edit/(?P<cid>\d+)/', 'pk': 3, 'pid': 1, 'title': '编辑客户'}, {'url': '/customer/del/(?P<cid>\d+)/', 'pk': 4, 'pid': 1, 'title': '删除客户'}, {'url': '/payment/list/', 'pk': 5, 'pid': None, 'title': '缴费列表'}, {'url': '/payment/add/', 'pk': 6, 'pid': 5, 'title': '添加缴费记录'}, {'url': '/payment/edit/(?P<pid>\d+)/', 'pk': 7, 'pid': 5, 'title': '编辑缴费记录'}, {'url': '/payment/del/(?P<pid>\d+)/', 'pk': 8, 'pid': 5, 'title': '删除缴费记录'} ] 列名的别名: permission_names=[ 'customer_list', 'customer_add', 'customer_edit', 'customer_del', 'payment_list', 'payment_add', 'payment_edit', 'payment_del' ] 菜单权限 permission_menu_dict={ '1': { 'menu_title': '信息管理', 'menu_icon': 'fa fa-connectdevelop', 'children': [{'title': '客户列表', 'url': '/customer/list/', 'pk': 1}] }, '2': { 'menu_title': '财务管理', 'menu_icon': 'fa fa-code-fork', 'children': [{'title': '缴费列表', 'url': '/payment/list/', 'pk': 5}]} }
二. 路径导航:面包屑
在中间件中,给request在加一个属性
1 request.breadcrumb=([ 2 { 3 "title": "首页", 4 "url": "/", 5 } 6 ]) 7 8 for item in permission_list: 9 reg="^%s$"%item["url"] 10 ret=re.search(reg,current_path) 11 if ret: 12 show_id=item["pid"] or item["pk"] 13 request.show_id=show_id 14 if item["pid"]: 15 ppermission=Permission.objects.filter(pk=item["pid"]).first() 16 request.breadcrumb.extend([ 17 { 18 "title": ppermission.title, 19 "url": ppermission.url, 20 }, 21 { 22 "title": item["title"], 23 "url":request.path, 24 } 25 ]) 26 else: 27 request.breadcrumb.extend([ 28 { 29 "title": item["title"], 30 "url": item["url"], 31 } 32 ]) 33 return None
前端使用:
1 <ol class="breadcrumb no-radius no-margin" style="border-bottom: 1px solid #ddd;"> 2 {% for foo in request.breadcrumb %} 3 <li ><a href="{{ foo.url }}">{{ foo.title }}</a></li> 4 {% endfor %} 5 </ol>
三.权限分配页面数据结构
[{ 'id': 1, 'url': '/customer/list/', 'title': '客户列表', 'name': 'web:customer', 'menu_id': 1, 'parent_id': None, 'menu__title': '信息管理' }, { 'id': 2, 'url': '/customer/add/', 'title': '添加客户', 'name': 'web:customer_add', 'menu_id': None, 'parent_id': 1, 'menu__title': None }, { 'id': 3, 'url': '/customer/edit/(?P<cid>\d+)/', 'title': '编辑客户', 'name': 'web:customer_edit', 'menu_id': None, 'parent_id': 1, 'menu__title': None }, { 'id': 4, 'url': '/customer/del/(?P<cid>\d+)/', 'title': '删除客户', 'name': 'web:customer_del', 'menu_id': None, 'parent_id': 1, 'menu__title': None }, { 'id': 5, 'url': '/payment/list/', 'title': '缴费列表', 'name': 'web:payment', 'menu_id': 1, 'parent_id': None, 'menu__title': '信息管理' }, { 'id': 6, 'url': '/payment/add/', 'title': '添加缴费记录', 'name': 'web:payment_add', 'menu_id': None, 'parent_id': 5, 'menu__title': None }, { 'id': 7, 'url': '/payment/edit/(?P<pid>\d+)/', 'title': '编辑缴费记录', 'name': 'web:payment_edit', 'menu_id': None, 'parent_id': 5, 'menu__title': None }, { 'id': 8, 'url': '/payment/del/(?P<pid>\d+)/', 'title': '删除缴费记录', 'name': 'web:payment_del', 'menu_id': None, 'parent_id': 5, 'menu__title': None }] { 1: { 'id': 1, 'url': '/customer/list/', 'title': '客户列表', 'name': 'web:customer', 'menu_id': 1, 'parent_id': None, 'menu__title': '信息管理', 'children': [{ 'id': 2, 'url': '/customer/add/', 'title': '添加客户', 'name': 'web:customer_add', 'menu_id': None, 'parent_id': 1, 'menu__title': None }, { 'id': 3, 'url': '/customer/edit/(?P<cid>\d+)/', 'title': '编辑客户', 'name': 'web:customer_edit', 'menu_id': None, 'parent_id': 1, 'menu__title': None }, { 'id': 4, 'url': '/customer/del/(?P<cid>\d+)/', 'title': '删除客户', 'name': 'web:customer_del', 'menu_id': None, 'parent_id': 1, 'menu__title': None }] }, 5: { 'id': 5, 'url': '/payment/list/', 'title': '缴费列表', 'name': 'web:payment', 'menu_id': 1, 'parent_id': None, 'menu__title': '信息管理', 'children': [{ 'id': 6, 'url': '/payment/add/', 'title': '添加缴费记录', 'name': 'web:payment_add', 'menu_id': None, 'parent_id': 5, 'menu__title': None }, { 'id': 7, 'url': '/payment/edit/(?P<pid>\d+)/', 'title': '编辑缴费记录', 'name': 'web:payment_edit', 'menu_id': None, 'parent_id': 5, 'menu__title': None }, { 'id': 8, 'url': '/payment/del/(?P<pid>\d+)/', 'title': '删除缴费记录', 'name': 'web:payment_del', 'menu_id': None, 'parent_id': 5, 'menu__title': None }] } }