django - 如果 django rest 中提供了未经授权的凭据,如何发送自定义响应

标签 django django-rest-framework django-authentication django-rest-auth

如果在 django rest 中提供了未经授权的凭据,如何发送自定义响应。

class StockList(APIView):
    permission_classes = [IsAuthenticated]

    def get(self,request):
         stocks = Stock.objects.all()
         serializer = StockSerializer(stocks,many=True)
         return Response({'user': serializer.data,'post': serializer.data})
    def post(self):
         pass

在这里,当我通过无效凭据点击 url 时,我在开发服务器上收到 401 错误。 但我想使用 json 在客户端上发送自定义响应。 欢迎任何建议。 谢谢。

最佳答案

您可以使用自定义异常处理程序来自定义 api 异常的响应。

from rest_framework.views import exception_handler
def custom_exception_handler(exc, context):
    # Call REST framework's default exception handler first,
    # to get the standard error response.
    response = exception_handler(exc, context)

    # Now add the HTTP status code to the response.
    if response is not None:
        response.data['status_code'] = response.status_code

    if response.status_code == 401:
        response.data['some_message'] = "Some custom message"

    return response

然后在setting.py中您必须添加自定义错误处理程序

REST_FRAMEWORK = {
    'EXCEPTION_HANDLER': 'my_project.path.to.custom_exception_handler'
}

引用:docs

关于django - 如果 django rest 中提供了未经授权的凭据,如何发送自定义响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45941976/

相关文章:

Django ORM : Get column of DataBaseError

django - 数据库错误,没有这样的表 :auth_user in django

python - 创建 Django 自定义用户模型时的关系错误

django - 每次我重新启动笔记本电脑时,我都必须再次在 Pycharm 中设置 Django。错误 请为项目启用 Django 支持

python - 相对导入超出顶级包错误

django - 是否可以在 Django 中创建我自己的 createsuperuser 命令?

python - Django 2.0 身份验证 View 中 Reset Done 和 reset Complete 的区别

django - 如何在 DRF 中添加嵌套关系的平均值

python - 如何在 Django REST Framework 3 中进行模型批量插值?

django - auth.views.Loginview 显示 "__init__() got an unexpected keyword argument ' 请求'“