Ответ кеша остальной структуры Django в методе list, основанном на query_params - PullRequest
0 голосов
/ 14 сентября 2018

Я использую django rest framework для моделирования представлений API.У меня есть класс API ModelViewSet, который имеет два метода действия: list () и retrieve ()

retrieve () пример метода:

@method_decorator(never_cache)
def retrieve(self, request, *args, **kwargs):
    # /en/api/v1/pair/<parameter> calls this method
    ...
    return Response(some_data)

Пример метода list ():

@method_decorator(cache_page(settings.PAIR_CACHE_LIFETIME))
def list(self, request, *args, **kwargs):
    # /en/api/v1/pair/, /en/api/v1/pair/?name=<parameter> calls this method
    # /en/api/v1/pair/ and /en/api/v1/pair/?name=all - response SHOULD be cached
    # /en/api/v1/pair/?name=random and /en/api/v1/pair/?name=CORRECT_PAIR_NAME - SHOULD NOT be cached
    ...
    return Response(some_data)

Когда запрос GET отправляется на / en / api / v1 / pair - это метод списка вызовов, который оформляется для ответа кэша.Когда запрос GET отправляется на / en / api / v1 / pair / - он вызывает метод извлечения, который оформлен в never_cache.

Я добавляю функцию для возврата случайной пары, когда GET запрос отправляется на / en / api / v1 / pair /? Name = random .Но так как он вызывает метод списка, возвращаемый результат кешируется некоторое время и некоторое время возвращает тот же ответ.

Какой способ НЕ будет кэшировать ответ в методе list () ,когда / en / api / v1 / pair /? name = random вызывается конечная точка, но она должна кэшировать все остальное, что вызывается в методе списка.

Спасибо!

...