django实现不同用户查看不同菜单

Posted python运维之路

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django实现不同用户查看不同菜单相关的知识,希望对你有一定的参考价值。

django实现不同用户查看不同菜单

当我们用django做好一个管理系统之后,通常会给不同的用户不同权限,当然不同的用户看到的页面也应该是不同的,比如研发不应该看到运维的相应菜单,运维又不应该看到超级管理员的对应菜单。如何实现呢,笨方法就是为不同权限的人各写一套页面,但是工作量太大,而且代码不重用。

我们下面这个方法是使用将菜单存成一张menu表,然后根据request.root和menu表关联,来实现不同的用户显示不同的菜单。

先首要把菜单栏作为一个表,菜单的名字和菜单的链接(urlname参数)都是表项。

django实现不同用户查看不同菜单

然后我们根据登录的用户,来判断这个用户是研发还是测试还是运维,来显示不同的菜单。

如果做到呢,request有个root参数能显示当前的登录用户,这个默认在user表里;然后把user表和自己创建的userprofile表建立一对一关系,就能根据user表找到userprofile表。userprofile表可以如下建立:

django实现不同用户查看不同菜单

这样,就根据的登录的用户关联到了userprofile表,再通过userprofile表去关联自己建立的其他表。

我是如下关联的:

userprofile对应role表,即你这个用户属于什么角色

django实现不同用户查看不同菜单

role对应menu表,根据角色选择不同的菜单

由此就实现不了不同的用户显示不同的菜单




以上是关于django实现不同用户查看不同菜单的主要内容,如果未能解决你的问题,请参考以下文章

有 2 组用户在 django 中查看 2 个不同的视图

Django为不同的组模板不同的项目。用户身份验证和组隔离

django的权限组件

Django中管理员和应用程序的不同会话

最初在 django 内联表单集中设置不同的外键值

如何在 Django 中添加多态类?