我有一个简单的视图,列出了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可能是合适的,但我怎样才能在我的视图中明确地返回该代码?
谢谢!
答案 0 :(得分:0)
如果您提出DRF的ValidationError,上面的代码可能会有效。 DRF ValidationError导致视图返回HTTP_400_BAD_REQUEST
状态。
可能是导致500的APIException。如果你想使用APIException,请确保它从DRF对ValidationError进行子类化。