在django ninja中处理异常问题
更新时间:2026年01月21日 14:24:46 作者:babybin
文章介绍了Django Ninja中内置异常的使用方法,展示了如何覆写这些异常类的处理函数来改变返回结果,并以创建一个自定义的500服务不可用异常类为例,详细说明了如何定义自定义异常和为其添加处理函数
1. 直接抛内置异常
Django ninja内置了一些常用异常类。
from ninja.errors import HttpError
@api.get("/some/resource")
def some_operation(request):
if True:
raise HttpError(503, "Service Unavailable. Please retry later.")
2. 覆写异常类
可以覆写内置异常类的handler,改变返回结果的内容。
from ninja.errors import ValidationError
...
@api.exception_handler(ValidationError)
def validation_errors(request, exc):
return HttpResponse("Invalid input", status=422)
3. 自定义异常类
以创建一个500服务不可用异常类为例。
要实现这一点,你需要:
- 自定义一个ServiceUnavailableError
- 使用
api.exception_handler为ServiceUnavailableError异常添加一个处理函数
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"}总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
使用pyqt5 tablewidget 单元格设置正则表达式
今天小编就为大家分享一篇使用pyqt5 tablewidget 单元格设置正则表达式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2019-12-12


最新评论