小编Dim*_*man的帖子

Django REST“GET”查询参数序列化器

我想接收带有查询参数(如果存在)的获取查询和过滤数据集。我目前正在使用下面列出的愚蠢方法。在这种情况下,我不喜欢它没有检查日期是否实际上可以被解析。在另一种方法中,我可能只想接收可以解析为 int 的数字字符串。有没有一些很酷的Pythonic方法可以做到这一点,而无需编写一堆样板代码?

class TrackList(APIView):

    @token_required
    def get(self, request, pk, **kwargs):
        # read query params
        date_from = self.request.query_params.get('date_from')
        date_to = self.request.query_params.get('date_to')
        # if present then filter
        if date_from and date_to:
            points = Track.objects.filter(user_id=pk, date__range=[date_from, date_to])
        # otherwise don't filter
        else:
            points = Track.objects.filter(user_id=pk)
        points.order_by('date')
        serializer = TrackListSerializer(points, many=True)
        return Response(serializer.data, status=status.HTTP_200_OK)
Run Code Online (Sandbox Code Playgroud)

UPD:问题实际上不是关于dateutil.parser,而是关于通用查询参数解析器。也许我应该使用 Django Rest 序列化器?

python django

2
推荐指数
1
解决办法
5708
查看次数

标签 统计

django ×1

python ×1