Django动态显示菜单栏
1,models.py文件中,添加is_menu和icon

2,admin.py文件中,添加admin的展示内容,并且对其进行注册

登陆admin

添加权限以及用户和角色



3,在login函数中的permission_list中进行筛选权限为空是False。并添加部分字段

4, 设置session

5,在前端中获取session中的字典,生成菜单

6,增加active属性。增强客户体验。在中间件中将当前访问的url匹配之后的添加的session中增加class=“active”
前段的使用

7,将前段的代码写成inclusiontag
1, 先创建一个python包,包的名字为templatetags

2,创建一个rabc.py文件

3, 将之前写在中间件的获取menu_list代码写到下面中。return的直接是一个menu_list,前端中不需要在session中取了

4,前端中的使用,创建一个menu.html

5, 在模板中,导入rabc

目前的问题是,代码过于分散,不利于迁移重复使用。现在将有关rbac组件的东西放到一块去。
1,

2, 导入并使用,init_permission
![]()

3, 将中间件的内容移动到rbac中,在rbac就不需要动了,如果移动了,需要修改settins中的注册中间件的内容
4,将templatetags心动到rbac中

此时要注意: 在rbac(app)下创建一个templates文件。知识点:templates的查找顺序,现在全局下进行查找,找不到在进行局部的app下的template进行查找(根据settions中的app的注册顺序),防止与其他app写的同名文件发生冲突,所以在templates文件下在创建一个文件,将py文件放置到该文件下。

5,迁移模板中于菜单相关的样式
![]()
6, 模板中导入css样式
![]()

浙公网安备 33010602011771号