在ListAPIView中返回什么http代码?

时间:2016-04-06 21:56:35

标签: python django http django-rest-framework

我有一个简单的视图,列出了django-rest-framework中的事件:

class EventListView(generics.ListAPIView):
    serializer_class = EventListSerializer

    def get_queryset(self):
        user_position = self.request.query_params.get('position', '')
        if not user_position or not re.match(r'^-?\d+\.\d+,-?\d+\.\d+$', user_position):
            raise APIException('Position is absent or invalid')

        return Event.objects.filter(...)

对于此视图,我需要验证position参数是否存在且格式正确。如果不是,我想返回一个合适的HTTP错误代码。

正如我现在所做的那样,如果出现错误,API会返回500错误代码,我认为这是错误的。

我应该返回更具体的HTTP错误代码吗?我认为状态代码400可能是合适的,但我怎样才能在我的视图中明确地返回该代码?

谢谢!

1 个答案:

答案 0 :(得分:0)

如果您提出DRF的ValidationError,上面的代码可能会有效。 DRF ValidationError导致视图返回HTTP_400_BAD_REQUEST状态。

可能是导致500的APIException。如果你想使用API​​Exception,请确保它从DRF对ValidationError进行子类化。