Данные запроса не могут быть доступны с этим кодом в функции обертки как я могу python3 django декоратор
не удается получить доступ к данным запроса в деораторе, как я могу это сделать? в моей функции-обертке
def my_decorator(view_func):
def wrapper(request, *args, **kwargs):
print('-start-')
print(request.data)
print(args)
print(kwargs)
print('-now-')
response = view_func(request, *args, **kwargs)
return response
return wrapper
class HandymanCompleteProfileIos(APIView):
@my_decorator
def post(self, request, format = None):
return JsonResponse({"A":"a"})
Первым аргументом метода экземпляра является self
, поэтому функция-обертка должна быть определена с self
в качестве первого аргумента, и передавать его обернутому методу при вызове:
def my_decorator(view_func):
def wrapper(self, request, *args, **kwargs):
print('-start-')
print(request.data)
print(args)
print(kwargs)
print('-now-')
response = view_func(self, request, *args, **kwargs)
return response
return wrapper
По просьбе вашего комментария вот как можно параметризовать декоратор дополнительным аргументом extra_arg
:
def my_decorator(extra_arg):
def decorator(view_func):
def wrapper(self, request, *args, **kwargs):
print('-start-')
print(request.data)
print(args)
print(kwargs)
print(extra_arg)
print('-now-')
response = view_func(self, request, *args, **kwargs)
return response
return wrapper
return decorator
попробуйте это:
from django.http import JsonResponse
from rest_framework.views import APIView
def my_decorator(view_func):
def wrapper(request, *args, **kwargs):
print('-start-')
# Accessing request data
print(request.data) # For DRF, use request.data
print(args)
print(kwargs)
print('-now-')
response = view_func(request, *args, **kwargs)
return response
return wrapper
class HandymanCompleteProfileIos(APIView):
@my_decorator
def post(self, request, format=None):
return JsonResponse({"A": "a"})