DRF 中的自定义未授权错误响应

Custom unauthorized error response in DRF

如果任何请求无法验证此视图,用户将获得默认的 Django-Rest 页面。我如何在未经授权的请求的情况下自定义此响应。

@api_view(['GET'])
@authentication_classes([JWTTokenUserAuthentication])
@permission_classes([IsAuthenticated])
def home_view(request):
-----

您可以创建自定义 EXCEPTION_HANDLER function 作为,

from rest_framework.views import exception_handler
<b>from rest_framework.exceptions import NotAuthenticated</b>
from rest_framework.response import Response


def custom_exception_handler(exc, context):
    <b>if isinstance(exc, NotAuthenticated):
        return Response({"custom_key": "custom message"}, status=401)</b>

    # else
    # default case
    return exception_handler(exc, context)

然后,在您的设置中连接这个新的自定义函数,

REST_FRAMEWORK = {
    # other settings
    <b>"EXCEPTION_HANDLER": "dotted.path.to.the.custom.function"</b>

}

因此,您将得到如下结果,