AttributeError: у объекта типа 'Token' нет атрибута 'objects'!, Как решить эту проблему?

Я пытаюсь создать пользовательский блог API с использованием представлений на основе классов и аутентификации токена. Но оба моих представления регистрации и входа в систему не работают должным образом. Когда я пытаюсь зарегистрировать пользователя, он выбрасывает ошибку Attribute, а когда я пытаюсь войти в систему, он говорит "Метод не разрешен: /register/ [15/Feb/2024 22:36:47] "GET /register/ HTTP/1.1" 405 13614" Я думаю, что я сделал некоторые ошибки в моем файле взглядов, но кажется, что я застрял и не могу двигаться вперед с этой ошибкой. Я также пробовал chatgpt, но это было бесполезно, пожалуйста, помогите.

это моя ссылка на github для репозитория https://github.com/Rohit10jr/cbv_blog_token_auth

вот мой вид регистрации и входа

class RegistrationAPIView(generics.CreateAPIView):
    queryset = CustomUser.objects.all()
    serializer_class = CustomUserSerializer
    permission_classes = [AllowAny]

    def create(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        user = self.perform_create(serializer)

        token, created = Token.objects.get_or_create(user=user)
        headers = self.get_success_headers(serializer.data)
        return Response({'token': token.key, 'user': serializer.data}, status=status.HTTP_201_CREATED, headers=headers)

    def perform_create(self, serializer):
        return serializer.save()
        # return super().perform_create(serializer)
        # return super().perform_create(serializer)
    
class LoginAPIView(generics.CreateAPIView):
    serializer_class = CustomUserSerializer
    permission_classes = [AllowAny]
    allowed_methods = ['POST']  # Allow both POST and GET requests

    def create(self, request, *args, **kwargs):
        email = request.data.get('email')
        password = request.data.get('password')

        user = authenticate(request, email=email, password=password)

        if user:
            login(request, user)
            serializer = self.get_serializer(user)
            token, created = Token.objects.get_or_create(user=user)
            return Response({'token': token.key, 'user': serializer.data}, status=status.HTTP_200_OK)
        else:
            return Response({'error': 'Invalid email or password'}, status=status.HTTP_401_UNAUTHORIZED)

это мой сериализатор

class CustomUserSerializer(serializers.ModelSerializer):
    class Meta:
        model = CustomUser
        fields = ('id', 'email', 'first_name', 'last_name', 'date_joined', 'is_active', 'is_staff')

мой след при попытке регистрации

Traceback (most recent call last):
  File "D:\01 DRF learn build grow\class based view\custom user CBV blog\venv\Lib\site-packages\django\core\handlers\exception.py", line 55, in inner   
    response = get_response(request)
               ^^^^^^^^^^^^^^^^^^^^^
  File "D:\01 DRF learn build grow\class based view\custom user CBV blog\venv\Lib\site-packages\django\core\handlers\base.py", line 197, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs) 
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
  File "D:\01 DRF learn build grow\class based view\custom user CBV blog\venv\Lib\site-packages\django\views\decorators\csrf.py", line 65, in _view_wrapper
    return view_func(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\01 DRF learn build grow\class based view\custom user CBV blog\venv\Lib\site-packages\django\views\generic\base.py", line 104, in view        
    return self.dispatch(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\01 DRF learn build grow\class based view\custom user CBV blog\venv\Lib\site-packages\rest_framework\views.py", line 509, in dispatch
    response = self.handle_exception(exc)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\01 DRF learn build grow\class based view\custom user CBV blog\venv\Lib\site-packages\rest_framework\views.py", line 469, in handle_exception 
    self.raise_uncaught_exception(exc)
  File "D:\01 DRF learn build grow\class based view\custom user CBV blog\venv\Lib\site-packages\rest_framework\views.py", line 480, in raise_uncaught_exception
    raise exc
  File "D:\01 DRF learn build grow\class based view\custom user CBV blog\venv\Lib\site-packages\rest_framework\views.py", line 506, in dispatch
    response = handler(request, *args, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\01 DRF learn build grow\class based view\custom user CBV blog\venv\Lib\site-packages\rest_framework\generics.py", line 190, in post
    return self.create(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\01 DRF learn build grow\class based view\custom user CBV blog\mainapp\views.py", line 22, in create
    token, created = Token.objects.get_or_create(user=user)
                     ^^^^^^^^^^^^^
AttributeError: type object 'Token' has no attribute 'objects'

ошибка при попытке входа

Method Not Allowed: /register/
[15/Feb/2024 22:36:47] "GET /register/ HTTP/1.1" 405 13614
Вернуться на верх