python - 在 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)
我想给用户更流畅的体验。
解决方案
推荐阅读
- python - 合并多个数据帧与内存错误
- docker - 无法运行 docker login 错误是:保存凭据时出错:存储凭据时出错
- reactjs - 当道具数据通过反应钩子发生变化时,我想重新渲染,但我得到了无限的重新渲染
- python - 点到两条线段的距离
- authentication - 如何将 HttpClientFactory 与模拟一起使用?或者找到另一种从基于 Windows 身份的服务中获取 JWT 令牌的方法?
- assembly - MASM 在保护模式下生成错误的调用目标
- python - 如何使seaborn clustermap的行大小相等?
- php - AJAX POST 请求无法与 .htaccess 重定向规则一起正常工作
- mysql - Magento 2.2.6 /var/lib/mysql/ 文件夹占用 43 GB 磁盘空间
- r - GeoJSON 的奇怪结果