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>
}
因此,您将得到如下结果,
如果任何请求无法验证此视图,用户将获得默认的 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>
}
因此,您将得到如下结果,