【发布时间】:2016-11-24 01:58:59
【问题描述】:
我正在使用 Django Rest Framework 和 DRF-Extensions 进行缓存。
我有一个带有自定义 list() 和 retrieve() 方法的视图集。我可以将@cache_response() 装饰器放在方法上,它会成功获取并设置到缓存中。但是,如果我尝试使用 CacheResponseMixin,则不会发生任何事情。
作品:
class SeriesViewSet(viewsets.ReadOnlyModelViewSet):
serializer_class = SeriesSerializer
def get_queryset(self):
series_type = EntityType.objects.get(name='series')
return Container.objects.filter(type=series_type)
@cache_response()
def list(self, request):
series = self.get_queryset()
serializer = SeriesSerializer(series, many=True)
return Response(serializer.data)
@cache_response()
def retrieve(self, request, pk=None):
name = pk
series = self.get_queryset()
show = series.get(data__title=name)
serializer = SeriesSerializer(show)
return Response(serializer.data)
不起作用:
class SeriesViewSet(CacheResponseMixin, viewsets.ReadOnlyModelViewSet):
serializer_class = SeriesSerializer
def get_queryset(self):
series_type = EntityType.objects.get(name='series')
return Container.objects.filter(type=series_type)
def list(self, request):
series = self.get_queryset()
serializer = SeriesSerializer(series, many=True)
return Response(serializer.data)
def retrieve(self, request, pk=None):
name = pk
series = self.get_queryset()
show = series.get(data__title=name)
serializer = SeriesSerializer(show)
return Response(serializer.data)
没有给出错误,我的缓存条目根本没有被创建。
【问题讨论】:
-
您是否尝试不覆盖例如列表方法?也许
CacheResponseMixin处的缓存包装存在问题。
标签: django caching django-rest-framework drf-extensions