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

浙公网安备 33010602011771号