zoukankan      html  css  js  c++  java
  • 路径导航,面包屑

    一. 正文内容时,左侧一级菜单不关闭

    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
            }]
        }
    }
  • 相关阅读:
    使用Redis的理由
    从输入网址到显示网页的全过程分析
    Node.js初识
    GET和POST的数据传递到底有何区别?
    第四五六周学习进度
    首尾相接整数数组中最大子数组的和
    网页版四则运算
    团队介绍及项目简介
    整数数组中最大子数组的和
    软件工程个人作业03
  • 原文地址:https://www.cnblogs.com/shanghongyun/p/9981282.html
Copyright © 2011-2022 走看看