2017-03-07 173 views
1

我在Django 1.10中有一個儀表板應用程序。我想限制只有管理員用戶才能訪問此應用的視圖,如果用戶未登錄,則將其重定向到管理員的登錄頁面。在Django中只允許管理員用戶訪問視圖

這就是我想申請某種邏輯,以便只有管理員用戶可以看到帶有/儀表板開始鏈接/

URL(R「^儀表板/」,包括(「demo.dashboard .urls',命名空間= '儀表盤'))

回答

1

你應該用user_passes_test裝飾:

def check_admin: 
    return user.is_superuser 

@user_passes_test(check_admin) 
def my_view(request): 
    ... 
1

你必須與裝飾無論是個人觀點裝修工,或者@staff_member_required裝修工。也許是後者,文檔狀態:

如果是Django的管理編寫自定義視圖(或需要相同的授權檢查內置視圖使用),你可能會發現django.contrib.admin.views.decorators.staff_member_required()裝飾的有用替代login_required()

+0

我的儀表板有很多視圖,大約20-25,我是否需要在每個視圖上應用裝飾器。沒有辦法,所以我可以在一個地方申請裝飾者? – ujjwalwahi

+0

單獨宣佈它們更爲pythonic。我們有大約40或50個自定義管理視圖,這就是我們如何對待他們。它們也具有獨特的權限級別,因此每個視圖都用'@ staff_member_required'裝飾器和'@ superuser_required'或者'@permission_required('some_model.some_permission')'裝飾。更容易,我會更安全。 – YellowShark

+0

感謝您的建議。 – ujjwalwahi

相關問題