Django - как получить доступ к телу запроса в декораторе?

Мне нужно получить доступ к телу запроса внутри декоратора, как я могу это сделать?

Я вызываю декоратор cache_page из get в представлении, основанном на классе. Для выполнения некоторой логики мне нужно получить доступ к URL запроса в декораторе.

Вот мой код:

def custom_cache_page(timeout, *, cache=None, key_prefix=None):
    #print(request)
    return decorator_from_middleware_with_args(CacheMiddleware)(
        page_timeout=85,
        cache_alias=cache,
        key_prefix=key_prefix,
    )


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

    @method_decorator(custom_cache_page(1.5))
    def get(self, request, format=None):
        ...

Edit: я пытался сделать это с помощью @wraps

def custom_cache_page(view):
    @wraps(view)
    def inner(request, *args, **kwargs):
        return decorator_from_middleware_with_args(CacheMiddleware)(
            page_timeout=85,

        )
    return inner

Вы можете определить декоратор внутри custom_cache_page, например:

from functools import wraps

def custom_cache_page(timeout, *, cache=None, key_prefix=None):
    callto = decorator_from_middleware_with_args(CacheMiddleware)(
        page_timeout=85,
        cache_alias=cache,
        key_prefix=key_prefix,
    )
    def decorator(view):
        @wraps(view)
        def f(request, *args, **kwargs):
            print(request)
            return callto(view)(request, *args, **kwargs)
        return f
    return decorator
Вернуться на верх