在djangoninja中处理异常问题

Written by

in

文章目录
  • 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 应用名出错异常原因解析
  • 目录
    • 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 应用名出错异常原因解析

    站内搜索