Django使用裝飾器限制對(duì)視圖的訪問及實(shí)現(xiàn)原理
Django使用裝飾器限制對(duì)視圖的訪問
1.登錄鑒權(quán)裝飾器
除了可以在視圖處理中校驗(yàn)用戶身份以及驗(yàn)證用戶權(quán)限之外,Django還提供了便捷的裝飾器來完成這兩類校驗(yàn)。@login_required裝飾器用來驗(yàn)證用戶是否登錄,只有登錄的用戶才可以訪問視圖,并獲得響應(yīng),否則可以重定向到登錄頁引導(dǎo)用戶登錄。@permission_required裝飾器用來校驗(yàn)用戶是否具有特定的權(quán)限,只有校驗(yàn)通過的用戶才可以訪問視圖。下面介紹這兩個(gè)裝飾器的使用方法與實(shí)現(xiàn)原理
2.@login_required
使用@login_required可以傳遞兩個(gè)參數(shù)
- login_url:匿名用戶訪問時(shí)重定向的URL,通常都會(huì)跳轉(zhuǎn)到登錄頁。默認(rèn)的登錄頁由settings.LOGIN_URL指定,需要設(shè)置為系統(tǒng)中定義的登錄頁URL
- redirect_field_name:默認(rèn)值為next,作為GET請(qǐng)求的參數(shù)。這個(gè)參數(shù)可以用于登錄后直接跳回到原先訪問的視圖
3.@permission_required
使用@permission_required可以傳遞三個(gè)參數(shù):
- perm:需要校驗(yàn)的權(quán)限,可以是列表、元組或字符串。如果是列表或元組則需要用戶同時(shí)擁有這些權(quán)限
- login_url:沒有指定權(quán)限的用戶訪問時(shí)重定向的URL,與@login_required中的login_url參數(shù)含義相同
- raise_exception:默認(rèn)為False,如果設(shè)置為True,則當(dāng)沒有權(quán)限的用戶訪問時(shí)將直接返回403
由于Python支持給函數(shù)配置多個(gè)裝飾器,所以,校驗(yàn)登錄和校驗(yàn)權(quán)限的裝飾器可以同時(shí)使用。例如:

這樣,訪問Topic詳情視圖時(shí),不僅需要當(dāng)前用戶是已登錄用戶,還需要其同時(shí)擁有can_view_topic和add_topic兩個(gè)權(quán)限
到此這篇關(guān)于Django使用裝飾器限制對(duì)視圖的訪問的文章就介紹到這了,更多相關(guān)Django裝飾器限制視圖訪問內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python調(diào)用百度根據(jù)經(jīng)緯度查詢地址的示例代碼
今天小編就為大家分享一篇Python調(diào)用百度根據(jù)經(jīng)緯度查詢地址的示例代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-07-07
Python numpy有哪些常用數(shù)據(jù)類型
Numpy提供了兩種基本的對(duì)象:ndarray(N-dimensional Array Object)和 ufunc(Universal Function Object)。ndarray是存儲(chǔ)單一數(shù)據(jù)類型的多維數(shù)組,而ufunc則是能夠?qū)?shù)組進(jìn)行處理的函數(shù)2023-02-02
PyQt5+QtChart實(shí)現(xiàn)繪制曲線圖
QChart是一個(gè)QGraphicScene中可以顯示的QGraphicsWidget。本文將利用QtChart實(shí)現(xiàn)曲線圖的繪制,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-12-12

