看乙個簡單的示例
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...