Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 基于视图集中url的Rest框架对象过滤器_Django_Django Views_Django Rest Framework - Fatal编程技术网

Django 基于视图集中url的Rest框架对象过滤器

Django 基于视图集中url的Rest框架对象过滤器,django,django-views,django-rest-framework,Django,Django Views,Django Rest Framework,如何根据url筛选对象? 我跟着它,它返回404 网址 router.register(r'api/main/search/$', restviews.SearchResult) 序列化程序 class ListingSerializer(serializers.ModelSerializer): class Meta: model = Listing fields = ('name', 'categories', 'service', 'desc')

如何根据url筛选对象? 我跟着它,它返回404

网址

router.register(r'api/main/search/$', restviews.SearchResult)
序列化程序

class ListingSerializer(serializers.ModelSerializer):

    class Meta:
        model = Listing
        fields = ('name', 'categories', 'service', 'desc')
景色

class SearchResult(viewsets.ReadOnlyModelViewSet):
    model = Listing

    def list(self, request):
        if request.QUERY_PARAMS == 'GET' and request.QUERY_PARAMS.get('sec') == '1':
            key = request.GET.get('keyword')
            queryset = Listing.objects.filter(service__name__contains=key,).distinct()
            serializer = ListingSerializer(queryset, many=True)
            return Response(serializer.data)
        else:
            content = {'Error': 'nothing to see here'}
            return Response(content, status=status.HTTP_404_NOT_FOUND)

视图的逻辑取自正常工作的基本模型视图。因此,我认为这不是查询问题,更可能是其他原因导致了问题。

您似乎在这里进行了错误的比较:
if request.QUERY_PARAMS==“GET”

应该是
if request.method=='GET'

从您发布的链接:
通常需要至少提供queryset和serializer\u类属性。

此外,如果您查看文档中有关过滤的部分,您会发现建议使用get\u queryset方法进行过滤。更准确地说,您应该使用关于的部分