Django -如何在装饰器中访问请求体?



我需要访问一个装饰器内部的请求体,我怎么能做到这一点?

我在基于类的视图中从get调用cache_page装饰器。为了执行一些逻辑,我需要在装饰器中访问请求的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):
...

编辑:我试图这样做与@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,
)
defdecorator(view):
@wraps(view)
def f(request, *args, **kwargs):
print(request)
return callto(view)(request, *args, **kwargs)
return f
return decorator

最新更新