Кэширование ViewSet с помощью DRF: TypeError: _wrapped_view ()

Я просто хочу использовать кеширование ViewSet слишком медленно :(, с Django REST Framework.

Я сделал это:

...
from django.utils.decorators import method_decorator
from django.views.decorators.cache import cache_page
from django.views.decorators.vary import vary_on_cookie
...
class PRPKViewSet(viewsets.ModelViewSet):
    serializer_class = PrpkSerializer
    queryset = Prpk.objects.all().order_by('begin')
    # Authentification !
    permission_classes = (IsAuthenticated,)
    # Only 'get' method
    http_method_names = ['get']

    # Cache requested url for each user for 2 hours
    # @method_decorator(vary_on_cookie)
    @method_decorator(cache_page(60*2))
    def get_queryset(self):
        """ allow rest api to filter by submissions """
        queryset = Prpk.objects.all().order_by('begin')
        highway = self.request.query_params.get('highway', None)
        if highway is not None:
            queryset = queryset.filter(highway=highway)

        return queryset

Но при запросе у меня такая ошибка:

TypeError: _wrapped_view() missing 1 required positional argument: 'request'

Memcached установлен.

Итак, могу ли я кэшировать только один ViewSet (без использования расширения?)?

Большое спасибо.

Ф.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
1 353
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Украсить dispatch вместо get_queryset.

@method_decorator(cache_page(60*2))
def dispatch(self, request, *args, **kwargs):
    return super().dispatch(request, *args, **kwargs)

Привет спасибо. Я только что добавил функцию «отправки» над «get_queryset», но у меня есть такая ошибка: «если response.streaming или response.status_code не входит в (200, 304): AttributeError: объект 'NoneType' не имеет атрибута 'streaming' "

fabrice 24.07.2018 15:34

моя беда: отсутствует "возврат" :). Первый запрос: 11 с, второй вызов: 431 мс :). Это работает. А пока, пожалуйста, как мне увидеть кешированные страницы?

fabrice 24.07.2018 16:08

@fabrice правда, пропустил return, исправлено. Загляните в stackoverflow.com/questions/9048257/…, чтобы узнать, как получить исправленные страницы, поскольку это другой вопрос.

Dušan Maďar 24.07.2018 16:41

Другие вопросы по теме