I have the following code:
class OrderListViewSet(viewsets.ModelViewSet,
ReadOnlyCacheResponseAndETAGMixin):
permission_classes = (NoUpdatePermission,)
model_class = Order
lookup_field = 'unique_reference'
serializer_class = OrderSerializer
pagination_class = OrderPagination
@method_decorator(cache_page(settings.ORDER_CACHE_LIFETIME))
def dispatch(self, *args, **kwargs):
return super(OrderListViewSet, self).dispatch(*args, **kwargs)
def get_serializer_class(self):
if self.request.method == 'POST':
return CreateOrderSerializer
return super(OrderListViewSet, self).get_serializer_class()
def get_queryset(self, filters=None, **kwargs):
self.queryset = Order.objects.all()
return super(OrderListViewSet, self).get_queryset()
def perform_create(self, serializer):
if not self.request.user.is_authenticated:
_create_anonymous_user(self.request)
serializer.save(user=self.request.user)
return super(OrderListViewSet, self).perform_create(serializer)
I want to migrate to:
class OrderListViewSet(viewsets.ModelViewSet,
ReadOnlyCacheResponseAndETAGMixin):
permission_classes = (NoUpdatePermission,)
model_class = Order
lookup_field = 'unique_reference'
serializer_class = OrderSerializer
pagination_class = OrderPagination
@method_decorator(cache_page(settings.ORDER_CACHE_LIFETIME))
def dispatch(self, *args, **kwargs):
return super(OrderListViewSet, self).dispatch(*args, **kwargs)
def get_serializer_class(self):
if self.request.method == 'POST':
return CreateOrderSerializer
return super(OrderListViewSet, self).get_serializer_class()
def get_queryset(self, filters=None, **kwargs):
self.queryset = Order.objects.all()
return super(OrderListViewSet, self).get_queryset()
def perform_create(self, serializer):
if not self.request.user.is_authenticated:
_create_anonymous_user(self.request)
serializer.save(user=self.request.user)
return super(OrderListViewSet, self).perform_create(serializer)
My goal is to cache the ListView
for 60 seconds but not the DetailView
(always return latest data from there as it is used for long pulling).
The error which I get is:
TypeError: never_cache() missing 1 required positional argument: 'view_func'
Would it be reasonable to remove the never_cache
decorator all together?