2016-08-30 122 views
2

所以在我的urls.py(Django的外默認的admin部分)我想某些URL僅限制管理員,所以如果我有這樣的記錄用戶管理員創建受限URL

from django.contrib.auth.decorators import login_required 

    urlpatterns = [ 
     url(r'^a1$',login_required(views.admin_area1), name='a1'), 
     url(r'^a2$', login_required(views.admin_area2) , name='a2'), 
     url(r'^a3', login_required(views.admin_area3) , name='a3'), 
    ] 

有enyway torestrict這些鏈接記錄管理員不只是任何登錄的用戶? 是有的,但according to this我可以用user_passes_test,但我在視圖中使用它

+1

user_passes_test是最好的方法。順便說一句,不介意我說,如果你想成爲一名優秀的編碼員,開發閱讀文檔而不是SO的做法。 –

+0

@SwakeertJain'user_passes_test'的問題是我必須在我不喜歡的視圖中使用它,謝謝你的建議,我會閱讀文檔,但有時你想快速得到結果,並且文檔很大,沒有很好的例子 – max

回答

7

您可以使用user_passes_test(lambda u: u.is_superuser)在你用同樣的方法返回的裝飾login_required

urlpatterns = [ 
    url(r'^a1$', user_passes_test(lambda u: u.is_superuser)(views.admin_area1), name='a1'), 
] 

如果你想限制訪問管理員,那麼使用staff_member_required修飾器(其檢查is_staff標誌)而不是檢查is_superuser標誌可能會更準確。

from django.contrib.admin.views.decorators import staff_member_required 

urlpatterns = [ 
    url(r'^a1$', staff_member_required(views.admin_area1), name='a1'), 
    ... 
] 
+0

thanx,我不想使用Django管理員,我正在寫我自己的管理員,所以我想'staff_member_required'是我想要的 – max