Django使用裝飾器限制對視圖的訪問及實現原理
Django使用裝飾器限制對視圖的訪問
1.登錄鑒權裝飾器
除瞭可以在視圖處理中校驗用戶身份以及驗證用戶權限之外,Django還提供瞭便捷的裝飾器來完成這兩類校驗。@login_required
裝飾器用來驗證用戶是否登錄,隻有登錄的用戶才可以訪問視圖,並獲得響應,否則可以重定向到登錄頁引導用戶登錄。@permission_required
裝飾器用來校驗用戶是否具有特定的權限,隻有校驗通過的用戶才可以訪問視圖。下面介紹這兩個裝飾器的使用方法與實現原理
2.@login_required
使用@login_required
可以傳遞兩個參數
- login_url:匿名用戶訪問時重定向的URL,通常都會跳轉到登錄頁。默認的登錄頁由settings.LOGIN_URL指定,需要設置為系統中定義的登錄頁URL
- redirect_field_name:默認值為next,作為GET請求的參數。這個參數可以用於登錄後直接跳回到原先訪問的視圖
3.@permission_required
使用@permission_required
可以傳遞三個參數:
- perm:需要校驗的權限,可以是列表、元組或字符串。如果是列表或元組則需要用戶同時擁有這些權限
- login_url:沒有指定權限的用戶訪問時重定向的URL,與@login_required中的login_url參數含義相同
- raise_exception:默認為False,如果設置為True,則當沒有權限的用戶訪問時將直接返回403
由於Python支持給函數配置多個裝飾器,所以,校驗登錄和校驗權限的裝飾器可以同時使用。例如:
這樣,訪問Topic詳情視圖時,不僅需要當前用戶是已登錄用戶,還需要其同時擁有can_view_topic和add_topic兩個權限
到此這篇關於Django使用裝飾器限制對視圖的訪問的文章就介紹到這瞭,更多相關Django裝飾器限制視圖訪問內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Django自定義權限及用戶分組
- django配置DJANGO_SETTINGS_MODULE的實現
- 在Django中創建自己的自定義用戶模型
- Django項目創建的圖文教程
- django中資源文件夾的引入及配置方法