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