路径导航 :
        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>
 

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. 【转帖】CRI-O 1.0 正式发布

    CRI-O 1.0 正式发布 http://www.sohu.com/a/200141920_465914 CRI-O 出来之后 docker 也就可有可无了 docker创造性的提出了 将依赖关系封 ...

  2. K8S从入门到放弃系列-(1)环境初始化

    一.系统规划  主机名 IP   组件  k8s-master01 10.10.0.18 etcd.kube-apiserver.kube-controller-manager.kube-schedu ...

  3. PAT(B) 1018 锤子剪刀布(C:20分,Java:18分)

    题目链接:1018 锤子剪刀布 分析 用一个二维数组保存两人所有回合的手势 甲乙的胜,平,负的次数刚好相反,用3个变量表示就可以 手势单独保存在signs[3]中,注意顺序.题目原文:如果解不唯一,则 ...

  4. @Adaptive注解

    关于@Adaptive注解 引用dubbo官方文档的一段话: ​ Adaptive 可注解在类或方法上.当 Adaptive 注解在类上时,Dubbo 不会为该类生成代理类.注解在方法(接口方法)上时 ...

  5. Maven项目上总有一个小红叉问题

    一.maven project facet dynamic web module错误解决方案 在Eclipse中使用maven创建web-app的过程中总会遇到一个问题,cannot change v ...

  6. harbor环境搭建及web使用

    概述 Habor是由VMWare公司开源的容器镜像仓库.事实上,Habor是在Docker Registry上进行了相应的企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括:管理用户界面,基 ...

  7. Creating a ModelForm without either the 'fields' attribute or the 'exclude' attribute is prohibited; form ResumeForm needs updating.

    django 报错 django.core.exceptions.ImproperlyConfigured: Creating a ModelForm without either the 'fiel ...

  8. Sublime Text 添加java环境

    jre/bin/ 目录下添加 runJava.bat @ECHO OFF cd %~dp1 ECHO Compiling %~nx1....... IF EXIST %~n1.class ( DEL ...

  9. Go part 5 结构体,方法与接收器

    结构体 结构体定义 结构体的定义只是一种内存布局的描述(相当于是一个模板),只有当结构体实例化时,才会真正分配内存空间 结构体是一种复合的基本类型,通过关键字 type 定义为 自定义 类型后,使结构 ...

  10. SQL递归查询(with as)

    SQL递归查询(with cte as) with cte as(    select Id,Pid,DeptName,0 as lvl from Department    where Id = 2 ...