溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Django如何使用裝飾器限制對(duì)視圖的訪問

發(fā)布時(shí)間:2022-10-17 09:37:39 來源:億速云 閱讀:113 作者:iii 欄目:開發(fā)技術(shù)

本篇內(nèi)容介紹了“Django如何使用裝飾器限制對(duì)視圖的訪問”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

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í)使用。例如:

Django如何使用裝飾器限制對(duì)視圖的訪問

這樣,訪問Topic詳情視圖時(shí),不僅需要當(dāng)前用戶是已登錄用戶,還需要其同時(shí)擁有can_view_topic和add_topic兩個(gè)權(quán)限

“Django如何使用裝飾器限制對(duì)視圖的訪問”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI