左侧菜单权限组选择
浏览目录
注册菜单权限
''' 注册菜单权限''' # 查询当前登录用户的所有权限,按照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 %}