首页 > 解决方案 > 在 django rest 框架中缓存查询集?

问题描述

我有一个大型查询集,并且我有一个用于 generics.ListAPIView 的分页器。我想用它的所有页面缓存那个查询集,但我认为它不是那样工作的。我一直在试图弄清楚如何使用 Paginator 缓存查询集,但我似乎没有找到一种方法让它与 Django Rest 一起工作。

这是我的分页类:

class StandardPagesPagination(PageNumberPagination):
  page_size = 35

  def get_paginated_response(self, data):
      return Response({
          'links': {
              'next': self.get_next_link(),
              'previous': self.get_previous_link()
          },
          'count': self.page.paginator.count,
          'total_pages': self.page.paginator.num_pages,
          'results': data
      })

这是我的观点:

class OyunlarList(generics.ListAPIView):
    # queryset = Oyunlar.objects.all()
    filter_backends = [DjangoFilterBackend,filters.SearchFilter,filters.OrderingFilter]
    search_fields=['title']
    filterset_fields=['categories__name','platform','categories__category_id','game_id']
    ordering_fields = ['title', 'release_date','click_count','popularite']
    pagination_class = StandardPagesPagination


    serializer_class = OyunlarSerializer
    def get_queryset(self):
        queryset=Oyunlar.objects.all().order_by('click_count').prefetch_related('categories')
        #queryset=Oyunlar.objects.raw("select 'game_id' AS id,'title','base_price','en_ucuz' from oyunlar ")


        return queryset

    @method_decorator(cache_page(60 * 3))
    def dispatch(self, *args, **kwargs):
        return super(OyunlarList, self).dispatch(*args, **kwargs)

我想给用户更流畅的体验。

标签: pythondjangocachingdjango-rest-frameworkmemcached

解决方案


推荐阅读