Как кэшировать ClassBasedAPIViews в Django Rest Framework?
Я обслуживаю список продуктов в DRF и я пытался использовать кэш в ClassBasedApiViews,
.
urls.py
path('',ProductListAPIView.as_view(), name='products')
views.py:
class ProductListAPIView(ListAPIView):
permission_classes = [IsAuthenticated]
queryset = Product.objects.all()
serializer_class = ProductSerializer
serializers.py:
class ProductSerializer(serializers.ModelSerializer):
class Meta:
model = Product
fields = '__all__'
depth = 1
Там нет функции типа def get() ...
Поэтому я не могу использовать обычный декоратор перед функцией для кэширования.
Что я пробовал: path('', cache_page(300)(ProductListAPIView.as_view()), name='products')
это работает.
В случае нескольких декораторов path('', vary_on_headers('Authorization')(cache_page(300)(ProductListAPIView.as_view())), name='products')
работает также.
Есть ли лучший способ использовать оба декоратора cache_page
и vary_on_headers
для ClassBasedAPIView?