zoukankan      html  css  js  c++  java
  • django创建路径导航

    路径导航 :
            1.怎样设置需要登录但又不需要验证权限的路径 :
                    在settings中定义一个列表,列表中以正则的方式放入需要登录但无需验证的权限的项.在中间件中进行循环访问,如有符合的项,立即return即可,但要注意中间件中定义的其它必须项,可设置为None.
    request.current_menu_id = None
     
    request.breadcrumb_list = [{'title': '首页', 'url': '/index/'}]
    # 登陆后不需要权限
    for i in settings.NO_PERMISSION_LIST:
        if re.match(i, url):
            return
            2.设置路径导航的思路 : 
                    在中间件中定义一个列表存放访问的路径,并在前端动态渲染出来.
                    知识点 : 动态生成页面 : 自定义标签 inclusion_tag;将存在session中的menu以字典的形式存放,方便在中间件中取出二级菜单的路径和普通权限的路径.
            
    for permission in permission_dict.values():
        
        if re.match(r'^{}$'.format(permission['url']), url):
            pid = permission.get('pid')
            id = permission.get('id')
            
            if pid:    #存在pid,是普通权限
                request.current_menu_id = pid
                request.breadcrumb_list.append(           #添加二级菜单路径
                    {'title': permission_dict[str(pid)]['title'], 'url': permission_dict[str(pid)]['url']})
                request.breadcrumb_list.append({'title': permission['title'], 'url': permission['url']})   #添加普通权限路径
             
            else:      #pid不存在,表示访问的是二级菜单
                request.current_menu_id = id
                request.breadcrumb_list.append({'title': permission['title'], 'url': permission['url']})   #添加二级菜单路径
            
            return
            3.通过自定义标签动态渲染导航栏 :
    @register.inclusion_tag('breadcrumb.html')     #inclusion中的内容 : 将字典传入breadcrumb.html,注意传入参数
    def breadcrumb(request):
        return {'breadcrumb_list': request.breadcrumb_list}
            4.前端通过if判断设置导航栏结尾是否能被重复选择
    <div>
        <ol class="breadcrumb no-radius no-margin" style="border-bottom: 1px solid #ddd;">
     
            {% for breadcrumb in breadcrumb_list %}
                {% if forloop.last %}
                    <li class="active">{{ breadcrumb.title }}</li>
                {% else %}
                    <li><a href="{{ breadcrumb.url }}">{{ breadcrumb.title }}</a></li>
                {% endif %}
            {% endfor %}
        </ol>
    </div>
     
  • 相关阅读:
    如何使用EF?
    在一般处理程序中使用session
    C# base64 加密解密
    C#操作WMI文章汇总
    ASP.NET图片防盗链(使用一般处理程序)
    前台生成验证码
    .正则
    iframe标签的初试
    sqli-labs5-10(全程sqlmap)
    sql注入文件写入和读取
  • 原文地址:https://www.cnblogs.com/wangtaobiu/p/10602750.html
Copyright © 2011-2022 走看看