当前位置: 代码迷 >> 综合 >> Django REST Framework extensions 配合redis进行缓存
  详细解决方案

Django REST Framework extensions 配合redis进行缓存

热度:77   发布时间:2023-12-19 07:51:15.0

drf-extensions是django中的一个拓展插件,里面的功能繁多,这里我只介绍利用它进行简单快速的缓存.
附上drf-extensions的官方文档地址 http://chibisov.github.io/drf-extensions/docs/#cacheresponsemixin
- 配置环境

pip install drf-extensions
pip install django-redis
pip install django-redis-cache

  • settings中的相关配置

# 配置缓存为redis
CACHES = {'default': {'BACKEND': 'redis_cache.cache.RedisCache','LOCATION': 'redis://127.0.0.1:6379',"OPTIONS": {"CLIENT_CLASS": "redis_cache.client.DefaultClient",},},
}
# drf-extensions的设置
REST_FRAMEWORK_EXTENSIONS = {# 过期时间  单位是秒'DEFAULT_CACHE_RESPONSE_TIMEOUT':60*60
}
  • 简单使用方法
# views.py
from rest_framework_extensions.cache.mixins import CacheResponseMixin#在视图类中继承CacheResponseMixin 即可
class BtsearchViewset(CacheResponseMixin,mixins.ListModelMixin,mixins.RetrieveModelMixin,viewsets.GenericViewSet):queryset = Bt_test.objects.all()serializer_class = Bt_testSerializerfilter_backends = (DjangoFilterBackend,)pagination_class = AvSearchPagination

到这里,简单的配置就已经完成了.

我们可以来简单看下CacheResponseMixin的源码
源码.png
CacheResponseMixin继承自RetrieveCacheResponseMixin和ListCacheResponseMixin,当action是list和retrieve时,才会有缓存行为.

本文为个人学习记录,勿当教程

  相关解决方案