0

我正在开发一个学习管理系统。Django,当我们有不同的角色时使用/设计一个行级权限系统

该系统有几个演员,如学生,导师,管理员,院长等现在,我需要一个权限系统,可以处理不同的角色(学生可以添加课程到他们的篮子,教师可以CRUD一门课程,管理员也有访问财务部分等)

基于我的研究,我需要有一些行级权限系统可以处理不同的角色。我看到一些应用程序,如django-guardiandjang-permissionsdjango-rulez等,但仍然困惑于如何设计基于它们的角色(他们没有很好的文档)。

任何人都可以给我一个暗示来完成这个痛苦的工作吗?

回答

1

的Django内置了

我建议你阅读后续文档一个非常好的认证/授权API:https://docs.djangoproject.com/en/dev/topics/auth/这给你的基础知识。

对于您的应用程序,最好的方法是设置cetain事件的权限,例如编辑课程的权限。然后,您可以使用允许您执行这些操作的视图的权限所需的装饰器。例如,如果你有一个观点:

def edit_course(request): 
    ...#handle form rendering/submission for course model 

你可以添加这个鉴于以上:

@permission_required('course_editor') 
def edit_course(request): 
    ...#handle form rendering/submission for course model 

,然后只拥有此权限可以访问的一些功能的用户。

您可以通过创建您可以分配权限的群组一个教师组,然后你可以将你所有的工作人员分配给这个组,并且他们会继承这个'course_editor'的权限。

但是正如我所说这个问题对于一个特定的答案有点宽泛,所以你最好的选择就是在上面的url处理文档。

+0

感谢您的回复。那么,你的意思是根本不需要对象(行)权限?其实我读过Django Doc中的Auth部分.. – Soask

+1

不,在我看来,你可以像上面概述的那样处理大部分事情。这样你就可以访问来自请求的用户对象。 – Ctrlspc