Django - как я могу возвращать данные из представления динамически?

Я создал API с помощью Django, и у меня есть представление на основе класса, где я использую кэш с TTL 1,5 секунды.

Вот пример:

class Sales_View(APIView):
    http_method_names = ['get']

    @method_decorator(cache_page(1.5))
    def get(self, request, format=None):
        ...
        return JsonResponse({'page': page, 'records': len(data), 'data': data}, safe=False)

Я хотел бы использовать другую функцию с другим TTL кэша, когда в URL указан определенный параметр sale_value, вот другой пример:

class Sales_View(APIView):
    http_method_names = ['get']

    @method_decorator(cache_page(1.5))
    def get(self, request, format=None):
        ...
        return JsonResponse({'page': page, 'records': len(data), 'data': data}, safe=False)
    
    @method_decorator(cache_page(30))
    def get_large_sales(self, request, format=None):
        ...
        return JsonResponse({'page': page, 'records': len(data), 'data': data}, safe=False)

Когда запрашивается URL 127.0.0.1:8000/api/sales/?some_query=<some_value>&..., данные должны быть возвращены get. Когда запрашивается URL 127.0.0.1:8000/api/sales/?sale_value=, данные должны быть возвращены get_large_sales, поскольку он содержит параметр sale_value.

Подводя итог, мне нужно иметь возможность использовать другое время истечения кэша, когда запрос к моему API содержит определенный параметр. Возможно ли это сделать без использования redirect?

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