zoukankan      html  css  js  c++  java
  • Django-权限信息自定义标签

    自定义权限标签:

    import re
    from django.template import Library
    from django.conf import settings
    register = Library()
    
    @register.inclusion_tag("rbac/xxxxx.html")
    def menu_html(request):
        """
        去Session中获取菜单相关信息,匹配当前URL,生成菜单
        :param request:
        :return:
        """
        menu_list = request.session[settings.PERMISSION_MENU_KEY]
        current_url = request.path_info
    
        menu_dict = {}
        for item in menu_list:
            if not item['menu_gp_id']:
                menu_dict[item['id']] = item
    
        for item in menu_list:
            regex = "^{0}$".format(item['url'])
            if re.match(regex,current_url):
                menu_gp_id = item['menu_gp_id']
                if menu_gp_id:
                    menu_dict[menu_gp_id]['active'] = True
                else:
                    menu_dict[item['id']]['active'] = True
    
        result = {}
        for item in menu_dict.values():
            active = item.get('active')
            menu_id = item['menu_id']
            if menu_id in result:
                result[menu_id]['children'].append({ 'title': item['title'], 'url': item['url'],'active':active})
                if active:
                    result[menu_id]['active'] = True
            else:
                result[menu_id] = {
                    'menu_id':item['menu_id'],
                    'menu_title':item['menu_title'],
                    'active':active,
                    'children':[
                        { 'title': item['title'], 'url': item['url'],'active':active}
                    ]
                }
    
        return {'menu_dict':result}
    rbac/xxxx.html
    
    {% for k,item in menu_dict.items %}
        <div class="item">
            <div class="item-title">{{ item.menu_title }}</div>
            {% if item.active %}
                <div class="item-permission">
            {% else %}
                <div class="item-permission hide">
            {% endif %}
                {% for v in item.children %}
    
                    {% if v.active %}
                        <a href="{{ v.url }}" class="active">{{ v.title }}</a>
                    {% else %}
                        <a href="{{ v.url }}">{{ v.title }}</a>
                    {% endif %}
    
                {% endfor %}
            </div>
        </div>
    {% endfor %}

    ############样式相关

    # css
    .item-permission{
        padding: 3px 10px;
    }
    .item-permission a{
        display: block;
    }
    .item-permission a.active{
        color: red;
    }
    .hide{
        display: none;
    }
    # js
    $(function () {
    $('.item .item-title').click(function () {
        if($(this).next().hasClass('hide')){
            $(this).next().removeClass('hide')
        }else{
            $(this).next().addClass('hide')
        }
    })
    });
  • 相关阅读:
    前端--页面提交重置功能
    ztree获取当前选中节点子节点id集合的方法(转载)
    sqlserver锁表、解锁、查看销表 (转载)
    解决前端文件修改后浏览器页面未更新的问题
    简单的上传文件
    如何在Eclipse中查看JDK以及JAVA框架的源码(转载)
    设计模式--观察者模式
    WebService 学习
    学习quartz定时
    JS 中AJAX,Fetch,Axios关系
  • 原文地址:https://www.cnblogs.com/52-qq/p/8669816.html
Copyright © 2011-2022 走看看