2014-11-21 56 views
0

我在Django的REST框架如下功能:Django的REST框架无法处理畸形的JSON

@api_view(['GET', 'PUT']) 
@permission_classes((permissions.IsAuthenticated,)) 
def TestView(request, app_id): 
    return Response({}) 

应该总是返回与空对象的JSON响应,对不对?错误。如果我PUT数据在此URL与媒体类型application/json,并把它畸形的JSON,然后Django的barfs了500回应:

ParseError at /api/v1/test-url 
No exception message supplied 

我觉得DRF要么抛出异常,我能赶上,或发出400错误。事实上,即使文档状态:

的包装还会提供行为,比如返回405方法不 允许反应在适当的时候,并处理与畸形 输入访问request.DATA时发生的任何ParseError 例外。

那么,为什么我的应用程序吐出500错误?

+1

你有没有尝试过基于类的视图? – 2014-11-22 00:23:20

回答

0

您可以配置custom exception handler并处理那里的ParseError。

+0

* *会修复它 - 但我觉得你不应该需要实现一个自定义的异常处理程序来处理坏的JSON数据。 – Jamie 2014-11-22 00:07:15

+0

那么,或者你可以实现自己的JSONParser类,并将其配置为默认的JSONParser。然而,因为你想要做的是以不同的方式处理异常情况(无效的json),我会更喜欢一个自定义异常处理程序。 – inancsevinc 2014-11-22 00:50:58