Django之导航和细化到按钮级别根据权限显示

动态显示导航,当前页面的路径

显示导航的代码段

将显示的导航内容放置到request中

在模板中使用

此时点击二级菜单没有问题,但是点击三级菜单的时候,并没有二级菜单。

当有parent_id的时候,可以通过权限列表找到对应的二级菜单,并添加到breadcrum_list列表中,但是此时的权限列表(permisssions_list)是个列表,并且没有id这个字段,当然可以,把id这个字段添加进去,进而进行循环进行判断,显然这种存在效率问题。

解决方法:可以将权限列表,改为权限字典,字典的key是对应的菜单的id,每次查找只需要拿到对应的id就可以取出对应的url和title。这样就避免了循环。

修改permissions_list ---> permissions_dict

得到的数据结构:

修改完之后打印下结构,发现报错:

 寻找问题:

生成的字典是交给了session中。

在中间件中从session中获取permission_dict

OK,原来的permissions_list 就变成了permissions_dict

将获取的菜单信息,添加到breadcrumb_list 中。

注意: 由于权限字典的key是整型,但是经过session处理之后,key变成了字符串类型,但是parent_id还是数字类型,所以在字典取值的时候,需把parent_id转成字符串类型。

进一步完善代码:

将以上代码放入到inclusion_tag中,将以上代码放到新建的breadcrumb.html中

模板中使用

 

按钮级别的显示。

比如:陈没有添加功能的权限。所以在显示页面上就不应该显示添加功能的这个按钮

1, 修改表结构,并且给每个url起个别名

2, 去admin中添加name

 3,初始化权限中加入name字段

4,将permissions_name设置成唯一的目的是

 

将权限字典的key设置为name。引起了之后校验的问题

通过pname获取父标签。

前端中使用

完善代码:

可以将前端的逻辑写到filter中

前端中使用

OK完成!

 

posted @ 2018-10-11 15:06  猴里吧唧  阅读(533)  评论(0)    收藏  举报