路径导航 :
        1.怎样设置需要登录但又不需要验证权限的路径 :
                在settings中定义一个列表,列表中以正则的方式放入需要登录但无需验证的权限的项.在中间件中进行循环访问,如有符合的项,立即return即可,但要注意中间件中定义的其它必须项,可设置为None.
  1. request.current_menu_id = None
  2.  
  3. request.breadcrumb_list = [{'title': '首页', 'url': '/index/'}]
  4. # 登陆后不需要权限
  5. for i in settings.NO_PERMISSION_LIST:
  6. if re.match(i, url):
  7. return
        2.设置路径导航的思路 : 
                在中间件中定义一个列表存放访问的路径,并在前端动态渲染出来.
                知识点 : 动态生成页面 : 自定义标签 inclusion_tag;将存在session中的menu以字典的形式存放,方便在中间件中取出二级菜单的路径和普通权限的路径.

  1. for permission in permission_dict.values():
  2.  
  3. if re.match(r'^{}$'.format(permission['url']), url):
  4. pid = permission.get('pid')
  5. id = permission.get('id')
  6.  
  7. if pid: #存在pid,是普通权限
  8. request.current_menu_id = pid
  9. request.breadcrumb_list.append( #添加二级菜单路径
  10. {'title': permission_dict[str(pid)]['title'], 'url': permission_dict[str(pid)]['url']})
  11. request.breadcrumb_list.append({'title': permission['title'], 'url': permission['url']}) #添加普通权限路径
  12.  
  13. else: #pid不存在,表示访问的是二级菜单
  14. request.current_menu_id = id
  15. request.breadcrumb_list.append({'title': permission['title'], 'url': permission['url']}) #添加二级菜单路径
  16.  
  17. return
        3.通过自定义标签动态渲染导航栏 :
  1. @register.inclusion_tag('breadcrumb.html') #inclusion中的内容 : 将字典传入breadcrumb.html,注意传入参数
  2. def breadcrumb(request):
  3. return {'breadcrumb_list': request.breadcrumb_list}
        4.前端通过if判断设置导航栏结尾是否能被重复选择
  1. <div>
  2. <ol class="breadcrumb no-radius no-margin" style="border-bottom: 1px solid #ddd;">
  3.  
  4. {% for breadcrumb in breadcrumb_list %}
  5. {% if forloop.last %}
  6. <li class="active">{{ breadcrumb.title }}</li>
  7. {% else %}
  8. <li><a href="{{ breadcrumb.url }}">{{ breadcrumb.title }}</a></li>
  9. {% endif %}
  10. {% endfor %}
  11. </ol>
  12. </div>
 

django创建路径导航的更多相关文章

  1. 用django创建一个项目

    首先你得安装好python和django,然后配置好环境变量,安装python就不说了,从配置环境变量开始 1.配置环境变量 在我的电脑处点击右键,或者打开 控制面板\系统和安全\系统 -> 左 ...

  2. 利用django创建一个投票网站(一)

    这是教程的原始链接:http://django-intro-zh.readthedocs.io/zh_CN/latest/part1/ 创建你的第一个 Django 项目, 第一部分 来跟着实际项目学 ...

  3. Django创建基本流程

    Django创建基本流程 1.创建工程:django-admin startproject 工程名 2.创建应用:python manage.py startapp 应用名 3.激活项目:修改sett ...

  4. Django-权限管理与路径导航

    1.url权限管理 设计表 1.设计表 系统一共有多少个路径: 有哪些用户使用: 用户在公司的角色: 对角色进行权限分配(什么样的角色可以访问什么样的路径): 2.往表中添加数据,分配角色权限 3.登 ...

  5. Django创建数据库常用字段及参数

    Django创建数据库常用字段及参数 常用字段 1.models.AutoField 自增列= int(11) 如果没有的话,默认会生成一个名称为 id 的列,如果要显示的自定义一个自增列,必须将给列 ...

  6. Django创建工程项目以及工作原理

    一.Django 创建工作项目 1.创建 North 工程项目 (1)使用CMD命令行,切换到指定路径 django-admin.py startproject north (2)使用pycharm创 ...

  7. django创建项目

    django创建项目 安装django pip install django==1.9 Note: C:\Python34\Scripts\pip.exe 创建项目 django-admin star ...

  8. iOS开发——UI进阶篇(八)pickerView简单使用,通过storyboard加载控制器,注册界面,通过xib创建控制器,控制器的view创建,导航控制器的基本使用

    一.pickerView简单使用 1.UIPickerViewDataSource 这两个方法必须实现 // 返回有多少列 - (NSInteger)numberOfComponentsInPicke ...

  9. 用CSS变形创建圆形导航

    http://www.w3cplus.com/css3/building-a-circular-navigation-with-css-transforms.html 本文由陈毅根据SARA SOUE ...

随机推荐

  1. Django与JS交互的示例代码-django js 获取 python 字典-Django 前后台的数据传递

    Django与JS交互的示例代码 Django 前后台的数据传递 https://www.cnblogs.com/xibuhaohao/p/10192052.html 应用一:有时候我们想把一个 li ...

  2. element form 校验数组每一项

    1.校验的数据结构如下: 2.html结构 <el-dialog :title="title" :visible.sync="visable" width ...

  3. [转帖]Greenplum :基于 PostgreSQL 的分布式数据库内核揭秘 (上篇)

    Greenplum :基于 PostgreSQL 的分布式数据库内核揭秘 (上篇) https://www.infoq.cn/article/3IJ7L8HVR2MXhqaqI2RA 学长的文章.. ...

  4. 《Mysql - 我的Mysql为什么会抖一下?》

    一: 抖一下? - 平时的工作中,不知道有没有遇到过这样的场景. - 一条 SQL 语句,正常执行的时候特别快,但是有时也不知道怎么回事,它就会变得特别慢. - 并且这样的场景很难复现,它不只随机,而 ...

  5. TypeScript symbol类型

    自ECMAScript 2015(ES6)起,symbol成为了一种新的原生类型,就像基本类型number和string一样. ⒈介绍及使用方式 TypeScript中使用symbol类型和JavaS ...

  6. PHP的 parse_ini_file 解析配置文件

    解析配置文件: parse_ini_file 类似解析php.ini文件样 配置文件内容如下: Example #1 sample.ini 的内容 ; This is a sample configu ...

  7. vue-cookies的使用

    安装vue-cookies npm install vue-cookies --save 使用vue-cookies // 在main.js中 // require var Vue = require ...

  8. 普通表分区改造_rename方式

    一.需求 配合开发人员,对业务临时表进行分区改造(业务认为的临时表,只需要保留近一月数据,并非oracle临时表类型) 二.如下记录完整过程 开发需求 TS_PM 以time_key分区 .沟通明确方 ...

  9. .net core下对于Excel的一些操作及使用

    原文:.net core下对于Excel的一些操作及使用 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.cs ...

  10. c#基础知识梳理(二)

    上期回顾 - https://www.cnblogs.com/liu-jinxin/p/10818256.html 一.变量 一个变量只不过是一个供程序操作的存储区的名字.在 C# 中,每个变量都有一 ...