zoukankan      html  css  js  c++  java
  • django 权限设置 左侧菜单点击显示,面包屑

    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="父权限")
    models

    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>
    layout中的渲染表签
  • 相关阅读:
    vim 命令
    navicat 破解
    vim 使用技巧记录
    Ubuntu 16.04 安装ftp服务器
    mockito测试入门学习
    Java的getClass()函数
    JQuery中Ajax的操作
    JS中获取元素使用getElementByID()、getElementsByName()、getElementsByTagName()的用法和区别
    Tomcat下ajax请求路径总结
    javascript:void()的理解
  • 原文地址:https://www.cnblogs.com/zhangqing979797/p/9980034.html
Copyright © 2011-2022 走看看