我想知道,我如何使用django-rest-framework从get请求q=thisterm
提供分页的json结果。
我理解使用SearchQuerySet.filter(content=q)
的干草堆结束但是如何使用此查询集序列化和创建api视图。我不确定使用哪个视图集,也不确定我需要在其余部分做什么的基本逻辑。
任何帮助都将不胜感激。
由于
答案 0 :(得分:11)
经过大量的反复试验,我找到了正确的组合!这是一个开始。
定义序列化程序: serializers.py
class DotaSearchSerializer(serializers.Serializer):
text = serializers.CharField()
name = serializers.CharField()
quality = serializers.CharField()
type = serializers.CharField()
rarity = serializers.CharField()
hero = serializers.CharField()
image = serializers.CharField()
desc = serializers.CharField()
创建视图: views.py
class DotaSearchViewSet(mixins.ListModelMixin, viewsets.GenericViewSet):
serializer_class = DotaSearchSerializer
permission_classes = (IsAuthenticated,)
authentication_classes = (SessionAuthentication, BasicAuthentication)
def get_queryset(self, *args, **kwargs):
request = self.request
queryset = EmptySearchQuerySet()
if request.GET.get('q') is not None:
query = request.GET.get('q')
queryset = SearchQuerySet().filter(content=query)
return queryset
请注意,您可能希望清理输入并执行其他安全检查。
路由它: urls.py
router.register(r'search', api_views.DotaSearchViewSet, base_name='search')