【发布时间】:2017-03-06 21:13:47
【问题描述】:
我在设置中设置了Debug=False 来测试我在客户端中的错误处理,但我从这个 api_view 中的异常中获取了一个 html 有效负载 (<h1>Server Error (500)</h1>):
@api_view(['POST', ])
@permission_classes((permissions.IsAuthenticated,))
@renderer_classes((JSONRenderer,))
@transaction.atomic()
def process_payment(request):
# Do some work
return Response(serializer.data)
我正在使用默认的 Accept 标头从 AngularJS 进行调用:Accept: application/json, text/plain, */*
Renderers 页面上的文档似乎表明,如果我明确使用 json 渲染器进行成功响应,我可以期待 json。
这是本地开发的副作用吗?如果可以的话,我不想编写代码来测试非 json 响应。
更新
我应该提到我在这次测试中使用了通配符 ALLOWED_HOSTS,所以我认为这不是问题。
查看 DRF 中的默认错误处理,看起来任何不是源自 APIException 或不是 Http404 或 PermissionDenied 的异常都将导致 Response=None。这是我看到 html 响应的地方,因此解决方案可能是 Django 自定义错误处理程序,如下面的评论所示。
【问题讨论】: