左侧菜单权限组选择

浏览目录

注册菜单权限

 ''' 注册菜单权限'''
    # 查询当前登录用户的所有权限,按照url,分组组名,每个权限要做的操作展示,权限列表去重
    permissions = user.roles.all().values("permissions__url", "permissions__group__title", "permissions__action").distinct()
    print("permissions",permissions)
    menu_permission_list=[]
    for item in permissions:     #循环每个权限
        if item["permissions__action"]=="list":  #如果权限操作是List
            # 将权限url和权限分组名称以元组形式添加到menu_permission_list列表中
            menu_permission_list.append((item["permissions__url"],item["permissions__group__title"]))
        print("menu_permission_list:",menu_permission_list)
        # 将menu_permission_list注册在session中
        request.session["menu_permission_list"]=menu_permission_list  

为了用户表和角色表同时继承一个模板,同时又能够使模板和数据统一继承,定义了inclusion_tag标签。

自定义inclusion_tag标签

自定义inclusion_tag的步骤

  • 在项目的app中创建名为templatetags的文件夹
  • 在templatetags的文件夹中创建自定义的my_tag.py文件
  • my_tag.py中编写自定义inclusion_tag

from django import template

register = template.Library()


@register.inclusion_tag('menu.html')
def get_menu(request):
    # 获取当前用户可以放到菜单栏中的权限
    menu_permission_list = request.session.get("menu_permission_list")
    return {"menu_permission_list": menu_permission_list}
  • 在templates文件夹中创建刚才注册的menu.html文件
<div>
    {% for menu in menu_permission_list %}
        <p class="menu_btn"><a href="{{ menu.0 }}">{{ menu.1 }}</a> </p>
    {% endfor %}
</div> 
  • 使用自定义my_tag前,首先在HTML页面中导入py文件 
{% load my_tag %}
{% get_menu request %}

  

  

原文地址:https://www.cnblogs.com/gaoya666/p/8964250.html