1.左侧菜单点击显示 就是在点击的时候保留点击的功能
方法。
1.加入新的字段,pid来判断
1 class Permission(models.Model): 2 """ 3 权限表 4 """ 5 title = models.CharField(max_length=32, verbose_name='标题') 6 url = models.CharField(max_length=32, verbose_name='权限') 7 menu=models.ForeignKey("Menu",on_delete=models.CASCADE,null=True) 8 name=models.CharField(max_length=32,verbose_name='url别名',default="") 9 pid=models.ForeignKey('self',on_delete=models.CASCADE,null=True,verbose_name="父权限")
2.写入数据
3.在中间件添加
1 request.breadcrumb =[ 2 { 3 "title" :"首页", 4 "url" :"/" 5 }, 6 ] 7 for item in permission_list: 8 reg ="^%s$" %item["url"] 9 ret =re.search(reg ,current_path) 10 if ret: 11 show_id =item["pid"] or item["id"] 12 request.show_id =show_id
根据pid和pk判断,通过request。show-id传递到 过滤器
4.在过滤器中通过是否有
1 @register.inclusion_tag("rbac/menu.html") 2 def get_menu_styles(request): 3 permission_menu_dict = request.session.get("permission_menu_dict") 4 print("permission_menu_dict", permission_menu_dict) 5 6 for val in permission_menu_dict.values(): 7 for item in val["children"]: 8 val["class"] = "hide" 9 # /payment/ 10 # /payment/edit/4/ 11 # ret=re.search("^{}$".format(item["url"]),request.path) 12 if request.show_id == item["pk"]: 13 val["class"] = "" 14 15 return {"permission_menu_dict": permission_menu_dict}
二
面包屑
1.在中间件中找到渲染在页面的的字典
1 request.breadcrumb =[ 2 { 3 "title" :"首页", 4 "url" :"/" 5 }, 6 ] 7 for item in permission_list: 8 reg ="^%s$" %item["url"] 9 ret =re.search(reg ,current_path) 10 if ret: 11 show_id =item["pid"] or item["id"] 12 request.show_id =show_id 13 14 # 确定面包屑列表 15 if item["pid"]: 16 ppermission =Permission.objects.filter(pk=item["pid"]).first() 17 #加入两个字典用extend 18 request.breadcrumb.extend( 19 [{ 20 "title" :ppermission.title, 21 "url" :ppermission.url, 22 } ,{ 23 "title": item["title"], 24 "url": request.path 25 } ,# 子权限字典 26 ] 27 28 ) 29 else: 30 request.breadcrumb.append( 31 { 32 "title" :item["title"], 33 "url" :item["url"] 34 } 35 ) 36 return None
1 <ol class="breadcrumb no-radius no-margin" style="border-bottom: 1px solid #ddd;"> 2 {% for item in request.breadcrumb %} 3 <li><a href="{{ item.url }}">{{ item.title }}</a></li> 4 {% endfor %} 5 </ol>