目錄python
from rest_framework.generics import ListAPIView from . import models, serializers from settings.const import BANNER_COUNT # 訪問量大,且數據較固定的接口,建議創建接口緩存 from django.core.cache import cache from rest_framework.response import Response class BannerListAPIView(ListAPIView): queryset = models.Banner.objects.filter(is_delete=False, is_show=True).order_by('-orders')[:BANNER_COUNT] serializer_class = serializers.BannerModelSerializer # 緩存有,走緩存,緩存沒有走數據庫 def list(self, request, *args, **kwargs): banner_data = cache.get('banner_list') if not banner_data: print('走數據庫') response = super().list(request, *args, **kwargs) banner_data = response.data # 創建緩存,不建議設置緩存過時時間,用celery等框架後臺異步更新緩存便可 cache.set('banner_list', banner_data) return Response(banner_data)