DRF之異常處理元件

2021-10-10 08:36:20 字數 2037 閱讀 4309

看乙個簡單的示例

class

apierror

(exception)

:pass

class

student2apiview

(apiview)

:def

get(self,request,pk)

:try

: instance = student.objects.get(pk=pk)

except student.doesnotexist:

raise apierror(

'自定義api錯誤'

)return response(

) serializer = studentmodelserializer(instance=instance)

return response(serializer.data)

rest framework提供了異常處理,我們可以自定義異常處理函式。

可以建立乙個utils資料夾,裡面放乙個exceptions.py檔案,名字隨便寫,然後寫下面的內容

from rest_framework.views import exception_handler

defcustom_exception_handler

(exc, context)

:#自定義的錯誤處理函式

」「」exc錯誤物件

context 異常發生時的一些上下文資訊

「」「# 先呼叫rest framework預設的異常處理方法獲得標準錯誤響應物件

response = exception_handler(exc, context)

#這個函式是drf提供的,它處理了一些錯誤,但是如果它處理不了的,它會返回none,所以,如果是none的話,我們需要自己來處理錯誤

# 在此處補充自定義的異常處理

if response is

none:if

isinstance

(exc,apierror)

#這裡就可以記錄錯誤資訊了,一般記錄到檔案中,可以使用日誌系統來進行記錄

# return respose()

response.data[

'status_code'

]= response.status_code

return response

在配置檔案中還要宣告自定義的異常處理

rest_framework =

如果未宣告,會採用預設的方式,如下

rest_frame/settings.py

rest_framework =

例如:

補充上處理關於資料庫的異常

from rest_framework.views import exception_handler as drf_exception_handler

from rest_framework import status

from django.db import databaseerror

defexception_handler

(exc, context)

: response = drf_exception_handler(exc, context)

if response is

none

: view = context[

'view'

]#出錯的方法或者函式名稱

DRF之限流元件

可以對介面訪問的頻次進行限制,以減輕伺服器壓力。一般用於付費購買次數,投票等場景使用.可以在配置檔案中,使用default throttle classes和default throttle rates進行全域性配置,rest framework default throttle rates可以使用...

drf元件之jwt認證

全稱 json web token 解釋 加密字串的原始資料是json,後台產生,通過web傳輸給前台儲存 格式 三段式 頭.載荷.簽名 頭和載荷用的是base64可逆加密,簽名用md5不可逆加密 內容 頭 基礎資訊,也可以為空 加密方式 公司資訊 專案組資訊 載荷 核心資訊 使用者資訊 過期時間 ...

DRF 3 請求響應異常處理

from rest framework.request import requestrest framework 傳入檢視的request物件不再是django預設的httprequest物件,而是rest framework提供的擴充套件了httprequest類的request類的物件。rest...