Как кэшировать 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?

Вернуться на верх