在django ninja中處理異常問題
更新時間:2026年01月21日 14:24:46 作者:babybin
文章介紹了Django Ninja中內(nèi)置異常的使用方法,展示了如何覆寫這些異常類的處理函數(shù)來改變返回結(jié)果,并以創(chuàng)建一個自定義的500服務(wù)不可用異常類為例,詳細(xì)說明了如何定義自定義異常和為其添加處理函數(shù)
1. 直接拋內(nèi)置異常
Django ninja內(nèi)置了一些常用異常類。
from ninja.errors import HttpError
@api.get("/some/resource")
def some_operation(request):
if True:
raise HttpError(503, "Service Unavailable. Please retry later.")
2. 覆寫異常類
可以覆寫內(nèi)置異常類的handler,改變返回結(jié)果的內(nèi)容。
from ninja.errors import ValidationError
...
@api.exception_handler(ValidationError)
def validation_errors(request, exc):
return HttpResponse("Invalid input", status=422)
3. 自定義異常類
以創(chuàng)建一個500服務(wù)不可用異常類為例。
要實現(xiàn)這一點,你需要:
- 自定義一個ServiceUnavailableError
- 使用
api.exception_handler為ServiceUnavailableError異常添加一個處理函數(shù)
api = NinjaAPI()
class ServiceUnavailableError(Exception):
pass
# initializing handler
@api.exception_handler(ServiceUnavailableError)
def service_unavailable(request, exc):
return api.create_response(
request,
{"message": "Please retry later"},
status=503,
)
# some logic that throws exception
@api.get("/service")
def some_operation(request):
if random.choice([True, False]):
raise ServiceUnavailableError()
return {"message": "Hello"}總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用pyqt5 tablewidget 單元格設(shè)置正則表達(dá)式
今天小編就為大家分享一篇使用pyqt5 tablewidget 單元格設(shè)置正則表達(dá)式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12
Python unittest 自動識別并執(zhí)行測試用例方式
這篇文章主要介紹了Python unittest 自動識別并執(zhí)行測試用例方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03
Python安裝配置OpenGL環(huán)境的全過程記錄
這篇文章主要給大家介紹了關(guān)于Python安裝配置OpenGL環(huán)境的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
Python中命令行參數(shù)argparse模塊的使用
argparse是python自帶的命令行參數(shù)解析包,可以用來方便的服務(wù)命令行參數(shù)。本文將通過示例和大家詳細(xì)講講argparse的使用,需要的可以參考一下2023-02-02

