Django-权限信息自定义标签

Posted 不会起名字

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)
    }
})
});

 

以上是关于Django-权限信息自定义标签的主要内容,如果未能解决你的问题,请参考以下文章

django中如何设置函数自定义执行

Django REST框架--认证和权限

自定义 Django 标签和 jQuery

django自定义模板标签和过滤器

在 Django 中正确使用自定义标签时遇到问题

在windows中配置pip安装源, 使用终端管理python虚拟环境, 自定义django的日志配置, 使用logging模块记录异常信息, 数据库用户及权限管理