文章目录
目录
- 1. 直接抛内置异常
- 2. 覆写异常类
- 3. 自定义异常类
- 总结
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.")
可以覆写内置异常类的handler,改变返回结果的内容。
from ninja.errors import ValidationError
...
@api.exception_handler(ValidationError)
def validation_errors(request, exc):
return HttpResponse("Invalid input", status=422)
以创建一个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"}
以上为个人经验,希望能给大家一个参考,也希望大家多多支持风君子博客。
您可能感兴趣的文章:
- Django RestFramework 全局异常处理详解
- Django与DRF结合的全局异常处理方案详解
- python中通过Django捕获所有异常的处理
- Django REST framework 异常处理
- Django模板报TemplateDoesNotExist异常(亲测可行)
- 关于django python manage.py startapp 应用名出错异常原因解析