rest_framework學習之認證 權限

權限

DRF提供如下幾種常見權限:

IsAuthenticated, 認證通過

IsAdminUser, 管理員權限

IsAuthenticatedOrReadOnly, 登錄用戶增刪改 非登錄用戶只能查詢

AllowAny,無需認證(默認)

在rest_framework的APIView基礎類中,對認證與權限做了更高級的封裝,如下:

class APIView(View):# The following policies may be set at either globally, or per-view.authentication_classes = api_settings.DEFAULT_AUTHENTICATION_CLASSESpermission_classes = api_settings.DEFAULT_PERMISSION_CLASSES

如果需要單獨設置

from django.conf import settings
from rest_framework.authtoken.models import Token
from rest_framework.decorators import api_view,authentication_classes,permission_classes
from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response
from rest_framework import status,generics,viewsets
#from rest_framework import permissions
from rest_framework.authentication import BasicAuthentication,SessionAuthentication,TokenAuthentication
from .models import Course
from .serializers import CourseSerializer
from rest_framework.views import APIView

fbv 方式

##函數式編程
@api_view(['GET','POST'])
@authentication_classes((BasicAuthentication,SessionAuthentication,TokenAuthentication))
@permission_classes((IsAuthenticated,))
def course_list(request):

cbv? gcbv viewsets 方式

# 類視圖 Class Based View
class CourseList(APIView):authentication_classes = 
(BasicAuthentication,SessionAuthentication,TokenAuthentication)
permission_classes = ((IsAuthenticated))def get(self,request):print(self.request.user,self.request.auth)

自定義權限

?新建文件permissions.py

from rest_framework import permissionsclass IsOwnerReadOnly(permissions.BasePermission):#只允許對象的所有者能編輯def has_object_permission(self, request, view, obj):"""所有的request 都有讀權限:param request::param view::param obj::return:"""#if request.method in ("GET","HEAD","OPTIONS"):if request.method in permissions.SAFE_METHODS:return True#對象的所有這才有寫權限return obj.teacher == request.user   #gcbv

加入到views.py 文件

class GCourseDetail(generics.RetrieveUpdateDestroyAPIView):queryset = Course.objects.all()serializer_class = CourseSerializerpermission_classes = (IsAuthenticated,IsOwnerReadOnly)# DRF 視圖集 viewsets
class CourseViewSet(viewsets.ModelViewSet):queryset = Course.objects.all()serializer_class = CourseSerializerpermission_classes = (IsAuthenticated, IsOwnerReadOnly)def perform_create(self, serializer):serializer.save(teacher= self.request.user)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/82164.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/82164.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/82164.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【使用switch結構輸出季節】2021-11-23

緣由用switch語句設計程序一年有12個月-編程語言-CSDN問答 void 使用switch結構輸出季節(int y) {//緣由https://ask.csdn.net/questions/7577096?spm1005.2025.3001.5141std::cout << y << "\t";switch (y){case 3: case 4: case 5:std::cout <<…

主備Smart Link + Monitor Link組網技術詳細配置

1.實驗拓撲 2.使用設備 eNSP模擬建議下行設備三臺使用S3700模擬&#xff08;全部使用S5700可能會出現流量丟失等異常問題。&#xff09; 3.實驗配置 [SW1]dis cu # sysname SW1 # vlan batch 100 110 # interface Ethernet0/0/1port link-type accessport default vlan 100 …

【hadoop】案例:Sqoop遷移倉庫數據

1 數據導出&#xff1a;Hive導入MySQL [hadoophadoop1 sqoop]$ bin/sqoop export \ > --connect jdbc:mysql://localhost/weather \ > --username root \ > --password 123456 \ > --table mean_temperature \ > --export-dir /user/hive/warehouse/mydb/mean…

Mysql-OCP PPT課程講解并翻譯

#跳過介紹&#xff0c;直接從干貨開始記錄 第一章 安裝mysql

springboot+vue實現在線網盤(云盤)系統

今天教大家如何設計一個網盤&#xff08;云盤&#xff09;系統系統 , 基于目前主流的技術&#xff1a;前端vue&#xff0c;后端springboot。 同時還帶來的項目的部署教程。 視頻演示 springbootvue實現在線網盤&#xff08;云盤&#xff09;系統 圖片演示 一. 系統概述 用過百…

JAVA:Spring Boot 集成 Lua 的技術博客

1、簡述 在現代開發中,Lua 以其輕量級、高性能以及易嵌入的特點廣泛用于腳本擴展、游戲開發以及配置處理場景。將 Lua 與 Spring Boot 集成,可以在 Java 項目中實現動態腳本功能,增強項目的靈活性和動態配置能力。 樣例代碼: https://gitee.com/lhdxhl/springboot-example…

uniapp-商城-43-shop 后臺管理 頁面

后臺管理較為簡單&#xff0c;主要用于后臺數據的管理&#xff0c;包含商品類別和商品信息&#xff0c;其實還可以擴展到管理用戶等等 1、后臺首頁 包含 分類管理 商品管理 關于商家等幾個欄目 主要代碼&#xff1a; <template><view class"manage">…

食物數據分析系統vue+flask

食物數據分析系統 項目概述 食物數據分析系統是一個集食物營養成分查詢、對比分析和數據可視化于一體的Web應用。系統采用前后端分離架構&#xff0c;為用戶提供食物營養信息檢索、食物對比和營養分析等功能&#xff0c;幫助用戶了解食物的營養成分&#xff0c;做出更健康的飲…

學習基本樂理知識

本文主要內容 如何練習吉他 樂理知識補充 ps&#xff1a;本文知識均來自up主 ‘吉他大學霸’ 感謝開源 -^- 練習吉他步驟 打怪升級 右手--> 左手--> 音階--> 拓展 第一階段&#xff1a; 追求手腳配合不出錯、手姿勢不出錯、手不會按錯彈錯。連續不錯的遍數達標就可以進…

吊球技術(劈吊、滑板等)

羽毛球吊球技術&#xff08;劈吊、滑板等&#xff09;是單打和雙打中重要的得分手段&#xff0c;需要通過系統性練習掌握。以下是分步驟的詳細訓練方法&#xff1a; 一、核心技術原理對比 技術類型擊球點拍面控制發力特點適用場景正手劈吊高點偏前斜切&#xff08;拍面45&…

Java實現桶排序算法

1. 桶排序原理圖解 桶排序是一種基于分桶思想的非比較排序算法&#xff0c;適用于數據分布較為均勻的場景。其核心思想是將數據分散到有限數量的“桶”中&#xff0c;每個桶再分別進行排序&#xff08;通常使用插入排序或其他簡單的排序算法&#xff09;。以下是桶排序的步驟&a…

OpenCv實戰筆記(3)基于opencv實現調用攝像頭并實時顯示畫面

一、實現效果 二、實現原理 使用 OpenCV 打開攝像頭&#xff0c;持續捕獲視頻幀&#xff0c;并在一個窗口中實時顯示這些幀&#xff0c;直到用戶按下 ESC 鍵退出。整體流程&#xff1a;打開攝像頭&#xff08;cv::VideoCapture&#xff09;>創建圖像顯示窗口&#xff08;cv…

編譯原理頭歌實驗:詞法分析程序設計與實現(C語言版)

編譯原理頭歌實驗&#xff1a;詞法分析程序設計與實現&#xff08;C語言版&#xff09; 1.實驗描述 任務描述 本關任務&#xff1a;加深對詞法分析器的工作過程的理解&#xff1b;加強對詞法分析方法的掌握&#xff1b;能夠采用一種編程語言實現簡單的詞法分析程序&#xff…

SQL常用操作大全:復制表、跨庫查詢、刪除重復數據

大家好&#xff0c;歡迎來到程序視點&#xff01;我是你們的老朋友.小二&#xff01; SQL常用操作精華總結 表結構與數據操作 復制表結構&#xff1a; SELECT * INTO b FROM a WHERE 1<>1 (SQL Server專用) SELECT TOP 0 * INTO b FROM a (更通用) 拷貝表數據&#…

課外活動:簡單了解原生測試框架Unittest前置后置的邏輯

簡單了解原生測試框架Unittest前置后置的邏輯 一、測試框架執行順序解析 1.1 基礎執行流程 import unittestclass A(unittest.TestCase):classmethoddef setUpClass(cls):print(f"【CLASS START】{cls.__name__}")def setUp(self):print(f"【TEST START】{se…

學習設計模式《八》——原型模式

一、基礎概念 原型模式的本質是【克隆生成對象】&#xff1b; 原型模式的定義&#xff1a;用原型實例指定創建對象的種類&#xff0c;并通過拷貝這些原型創建新的對象 。 原型模式的功能&#xff1a; 1、通過克隆來創建新的對象實例&#xff1b; 2、為克隆出來的新對象實例復制…

olmOCR - PDF文檔處理工具包

文章目錄 一、關于 olmOCR相關資源包含內容團隊 二、安裝三、本地使用示例查看結果多節點/集群使用管道完整文檔 一、關于 olmOCR olmOCR 是用于訓練語言模型處理PDF文檔的工具包&#xff0c;支持大規模PDF文本解析和轉換。 相關資源 源碼&#xff1a;https://github.com/all…

Android開發補充內容

Android開發補充內容 fragment通信生命周期 Okhttp基本使用websocket Retrofit基本使用 RxJava基本使用定時任務 Hilt基本使用進階使用例子 組件庫Material ComponentsJetpack Compose fragment 通信 fragment于activity通信的一種原生方法是使用Bundle&#xff1a; Bundle …

隱私計算框架FATE二次開發心得整理(工業場景實踐)

文章目錄 版本介紹隱私計算介紹前言FATE架構總體架構FateBoard架構前端架構后端架構 FateClient架構創建DAG方式DAG生成任務管理python SDK方式 FateFlow架構Eggroll架構FATE算法架構Cpn層FATE ML層 組件新增流程新增組件流程新增算法流程 版本介紹 WeBank的FATE開源版本 2.2.…

AI驅動的制造工藝:系統化探索與創新

DeepSeek 技術全景 在當今 AI 技術蓬勃發展的時代,DeepSeek 已成為該領域中一顆耀眼的明星。自 2023 年 7 月 17 日成立以來,這家由知名私募巨頭幻方量化孕育而生的公司,迅速在 AI 領域嶄露頭角 。DeepSeek 的目標是開發頂尖的大語言模型(LLM),并利用數據蒸餾技術打造更精…