回答
您可以使用user_passes_test
或staff_member_required
裝飾爲您與您的網址(與/staff/
開始)關聯的觀點,一個例子可能如下:
隨着user_passes_test
裝飾:
from django.contrib.auth.decorators import user_passes_test
@user_passes_test(lambda u: u.is_staff, login_url='/some_url/')
def your_view(request, ...):
# Only for staff
With staff_member_required
裝修工:
from django.contrib.admin.views.decorators import staff_member_required
@staff_member_required
def your_view(request, ...):
# Only for staff
使用自定義中間件。如果URL以/ staff /開頭並且request.user不是員工,則引發Http404或向客戶端返回一些特殊消息。
下面是一個例子:
對於django的版本< 1.10:
class StaffCheckMiddleware(object):
def process_request(self, request):
full_path = request.get_full_path()
if full_path.startswith('/staff/') and not request.user.is_staff:
raise Http404
對於django的版本1.10或以上:
class StaffCheckMiddleware(object):
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
full_path = request.get_full_path()
if full_path.startswith('/staff/') and not request.user.is_staff:
raise Http404
response = self.get_response(request)
return response
然後在settings.py
添加StaffCheckMiddleware
。
Django 1.10中的錯誤。在load_middleware mw_instance =中間件(處理程序) TypeError:object()不帶參數 –
@KareshA似乎Django在1.10中升級了它的中間件風格,我更新了django 1.10的答案,請檢查它是否適合您。 –
- 1. Django登錄後沒有重定向到所需的網址
- 2. Django,重定向工作人員從登錄到管理網站
- 3. 「#」登錄網址
- 4. django 1.10網址調度員不工作
- 5. Django的登錄不工作的非WWW網址
- 6. 無法登錄到Django管理員
- 7. 登錄到Django的管理員
- 8. 無法登錄到Django管理員
- 9. Django管理員登錄
- 10. 如何找到哪個管理員登錄django管理網站?
- 11. 整個網站不工作所需的django登錄
- 12. 登錄狀態登錄圖像網址
- 13. 具有登錄參數的網址
- 14. OpenAM有條件登錄網址
- 15. 批量自動登錄到IE網址
- 16. laravel登錄後重定向到網址
- 17. 使用httpclient登錄到https網址java
- 18. 默認登錄網址
- 19. 英鎊登錄網址
- 20. 打開網址並登錄
- 21. 自動登錄的網址
- 22. 登錄從我的網址
- 23. 登錄處理網址
- 24. Django登錄沒有得到所有的字段
- 25. 將請求重定向到所有網址,但使用.htaccess登錄
- 26. Django 1.5員工管理,其中一些員工可以登錄一些不能
- 27. 記錄錯誤的網址登錄
- 28. Django:暫時將所有網址重定向到一個視圖
- 29. 擴展Django的管理員登錄(用戶名,密碼,網站)
- 30. Django管理員登錄背景
如果我有20個工作人員的意見,那麼我需要添加這個所有的意見。我認爲第一個答案是最好的。 –
我覺得你對'login_required'裝飾器也需要登錄的視圖。當然,中間件的解決方案也很好。 – ettanany