Это мой класс TimesheetListApiV2
Есть много таких классов.
@valid_accesstoken_check
class TimesheetListApiV2(APIView):
def get(self, request):
try:
accesstoken=AccessToken.objects.get(
token=self.request.META.get('HTTP_AUTHORIZATION').replace('Bearer ', '')
)
except ObjectDoesNotExist:
return Response (
{
"status" : False,
"error" : "Wrong Access Token",
"error_message":"You have provided wrong access token.",
}
)
Теперь во всех моих классах есть этот фрагмент кода.
try:
accesstoken=AccessToken.objects.get(
token=self.request.META.get('HTTP_AUTHORIZATION').replace('Bearer ', '')
)
except ObjectDoesNotExist:
return Response (
{
"status" : False,
"error" : "Wrong Access Token",
"error_message":"You have provided wrong access token.",
}
)
Я хочу написать функцию или класс, где использовать этот код вместо его написания.Но это должно быть работоспособно, даже если request
должно быть пройдено.Даже в будущем я собираюсь добавить еще такой код, который должен быть использован повторно.
Я пытался сделать это decorators.py
from django.core.exceptions import ObjectDoesNotExist
from oauth2_provider.models import AccessToken
def valid_accesstoken_check(function):
def wrap(request, *args, **kwargs):
try:
accesstoken=AccessToken.objects.get(
token=self.request.META.get('HTTP_AUTHORIZATION').replace('Bearer ', '')
)
except ObjectDoesNotExist:
return Response (
{
"status" : False,
"error" : "Wrong Access Token",
"error_message":"You have provided wrong access token.",
}
)
wrap.__doc__ = function.__doc__
wrap.__name__ = function.__name__
return wrap
Но это дает ошибку
path('timesheet/list', views.TimesheetListApiV2.as_view(), name='api_v2_timesheet_list'),
AttributeError: 'function' object has no attribute 'as_view'