sed*_*nym 2 django django-rest-framework
我想ListAPIView使用此处描述的过滤技术来限制 a 返回的查询集。
问题是,如何处理无效参数?引发 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
| 归档时间: | 
 | 
| 查看次数: | 1942 次 | 
| 最近记录: |