drf缓存CacheResponseMixin–内存行缓存
-
安装包
pip3 install drf-extensions -
view–在你需要缓存的视图里加上CacheResponseMixin, 记住一定要放在第一位
# drf缓存 from rest_framework_extensions.cache.mixins import CacheResponseMixin class GoodsListViewSet(CacheResponseMixin, mixins.ListModelMixin, mixins.RetrieveModelMixin, viewsets.GenericViewSet): """ 商品列表页, 分页, 搜索, 过滤, 排序 """ # 指定queryset queryset = Goods.objects.all() # 指定序列化类 serializer_class = GoodsSerializer # 指定分页类 pagination_class = GoodsPagination # 指定认证类 # authentication_classes = [TokenAuthentication, ] # 添加过滤器 这里可以吧django-filter过滤器添加进来 和 rest_framework的filters添加进来一起用, 也可以单个用, 看你的需求 filter_backends = [DjangoFilterBackend, filters.SearchFilter, filters.OrderingFilter] # 只需要简单的基于等同的过滤,则可以filter_fields在视图或视图集上设置属性,列出要过滤的字段集。 # 等同就是根据你过滤的字段的数据必须跟数据库里那个字段的数据相同 # filter_fields = ['name', 'shop_price'] # 指定过滤器类 filter_class = GoodsFilter # 指定搜索的字段 search_fields = ['name', 'goods_brief', "goods_desc"] # 指定排序的字段 ordering_fields = ["sold_num", "shop_price"] def retrieve(self, request, *args, **kwargs): # 重写retrieve, 更新商品的点击数 instance = self.get_object() instance.click_num += 1 instance.save() serializer = self.get_serializer(instance) return Response(serializer.data) -
settings–设置缓存时间
# drf缓存时间 REST_FRAMEWORK_EXTENSIONS = { # 设置为5秒 'DEFAULT_CACHE_RESPONSE_TIMEOUT': 5 }
浙公网安备 33010602011771号