AssertionError: Ожидался `Response`, `HttpResponse` или `HttpStreamingResponse` ..., но получен `<class 'rest_framework.authtoken.models.Token'>'
Я пытаюсь вернуть аутентифицированную информацию о пользователе, такую как имя пользователя, email, first_name и last_name в MyProfile.vue с помощью сериализатора. Я получаю эту ошибку и не могу найти способ ее решения. Логика такова: Аутентифицированный пользователь хранит токен в localStorage, я получаю его через Axios запрос и отправляю его в View модель в Django, где я использую его для поиска пользователя и отправляю этого пользователя в get метод, чтобы отправить его обратно в MyAccount.vue и показать информацию о пользователе. Я использую Django Rest Framework и Vue.js. Надеюсь на вашу помощь, я уже неделю бьюсь с этой проблемой. Спасибо!
PS: Я делаю это, потому что User.objects.get(current_user=request.user) возвращает AnonymousUser, даже если я аутентифицирован.
Это мой Views.py:
class UserDetails(APIView):
def post(self, request, *args, **kwargs):
serializer = UserAccountTokenSendSerializer(data=request.data)
global token
if serializer.is_valid():
token = serializer.validated_data['token']
user = Token.objects.get(key=token)
self.user = user
# global current_user
# current_user = User.objects.get(username=user)
# email = User.objects.get(email=user)
# print(current_user, email)
return user
return Response(serializer.data)
def get(self, request, *args, **kwargs):
details = User.objects.get(user=self.user)
print(self.user)
serializer = UserAccount(details, many=True)
return Response(serializer.data)
# HERE I TRY TO PRINT IT TO SEE IF IT WORKS AND THIS IS WHERE I GET THE ERROR
# serializer = UserAccount(details, many=True)
# return Response(serializer.data)
Вот мои сериализаторы:
class UserAccount(serializers.ModelSerializer):
class Meta:
model = User
fields = (
'first_name',
'last_name',
'email',
'username',
)
# SENDS TOKEN TO CHECK PROFILE DETAILS
class UserAccountTokenSendSerializer(serializers.ModelSerializer):
class Meta:
model = UserAccountTokenSend
fields = (
'token',
)
# SENDS TOKEN AND RETRIEVES USER DATA
path('get-user-tokens/', views.UserDetails.as_view()),
# RETREIVES THE AUTHENTICATED USER DATA AND SENDS IT TO MYACCOUNT.VUE
path('get-user-details/', views.UserDetails.as_view()),