gpt4 book ai didi

django - 在 Django Rest Framework 中,如何处理无效的过滤参数?

转载 作者:行者123 更新时间:2023-12-01 09:25:19 24 4
gpt4 key购买 nike

我想限制 ListAPIView 返回的查询集,使用描述的过滤技术 here .

问题是,如何处理无效参数?引发 ValidationError 仅适用于序列化程序,不适用于 ViewSet。我想让用户知道请求无效,而不是默默地失败。

例如:

class PurchaseList(generics.ListAPIView):
serializer_class = PurchaseSerializer

def get_queryset(self):
queryset = Purchase.objects.all()
username = self.request.query_params.get('username', None)
if username is not None:
try:
user = User.objects.get(username=username)
except User.DoesNotExist:
# How do I handle this invalid parameter?
else:
queryset = queryset.filter(purchaser=user)
return queryset

最佳答案

使用内置异常,因为您正在响应未找到的内容,请使用 NotFound:

from rest_framework import exceptions

class PurchaseList(generics.ListAPIView):
serializer_class = PurchaseSerializer

def get_queryset(self):
queryset = Purchase.objects.all()
username = self.request.query_params.get('username', None)
if username is not None:
try:
user = User.objects.get(username=username)
except User.DoesNotExist:
raise exceptions.NotFound(detail="Some message if you want")
else:
return queryset.filter(purchaser=user)
return queryset

关于django - 在 Django Rest Framework 中,如何处理无效的过滤参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31449002/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com