码迷,mamicode.com
首页 > 其他好文 > 详细

4.基本权限验证之动态生成一级菜单

时间:2020-09-16 12:26:34      阅读:32      评论:0      收藏:0      [点我收藏+]

标签:流程   %s   icon   tle   request   html   query   default   代码   

class Permission(models.Model):
    """
    权限表
    """
    title = models.CharField(verbose_name=‘标题‘, max_length=32)
    url = models.CharField(verbose_name=‘含正则的URL‘, max_length=128)
    
    # 新增两个字段用于动态生成一级菜单,is_menu判断是否可做菜单
    is_menu = models.BooleanField(verbose_name=‘是否可做菜单‘, default=False)
    icon = models.CharField(max_length=32, null=True, blank=True)

    def __str__(self):
        return self.title

# views.py
# 登陆的时候把用户信息,权限信息, 菜单信息写入session
permission_query = obj.roles.filter(permissions__url__isnull).values(‘permissions__url‘, ‘permissions_is_nemu‘, ‘permissions_icon‘).distinct()去重

#权限信息和菜单信息分别写入session
menu_list = []
permission_list = []

for row in permission_queryset:
    permission_list_append({"permissions_url":row["permissions_url"]})

    if row["permissions_is_menu"]:
       menu_list.append({"title": row["permissions_title"], ‘icon‘:row["permissions_icon"], ‘url‘: row["permissions_url"]})

# 前端页面动态生成一级菜单
{%for item in request.session.menu_list%}
      {{item.title}}
{% emdfor %}

升级以上代码

"""执行流程:先找到模板(menu.html),根据menu函数返回值渲染模板"""
在app下创建templatetags
from django.template import Library
register = Library()

@register.inclusion_tag(‘menu.html‘)
def menu(request):
    menu_list = request.session.get(‘menu_session‘)
    # 给按钮增加选中效果
    for item in menu_list:
        reg = ‘^%s$‘ % item[‘url‘]
        if re.match(reg, request.path_info):
           item[‘class‘] = ‘active‘
    return {‘menu_list‘: menu_list}

# menu.html
{%for item in menu_list%}
      {{item.title}}
{% emdfor %}

# 把menu导入主html
{% load menu%}     # templatetags 下的py文件名

# 在主html中使用
{% menu request%}  # request是要传给menu的参数

4.基本权限验证之动态生成一级菜单

标签:流程   %s   icon   tle   request   html   query   default   代码   

原文地址:https://www.cnblogs.com/bibicode/p/13604913.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!