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