Я получаю предупреждение о плохих запросах при попытке подключиться к API, который я подготовил с помощью Django

У меня есть пользовательский API, который я подготовил с помощью django. Однако, когда я делаю запросы к API с помощью приложения Postman для тестирования, я получаю предупреждение 400 Bad Request, в чем может быть причина? Я могу написать все свои коды следующим образом, если есть какой-либо другой необходимый код.

Это код views.py

    from rest_framework_simplejwt.views import TokenObtainPairView
    from rest_framework import status
    from rest_framework.response import Response
    from rest_framework.views import APIView
    from .serializers import CustomUserSerializer
    from rest_framework_simplejwt.tokens import RefreshToken
    from rest_framework.permissions import AllowAny
    
    
    class CustomUserCreate(APIView):
        permission_classes = [AllowAny]
    
        def post(self, request, format='json'):
            serializer = CustomUserSerializer(data=request.data)
            if serializer.is_valid():
                user = serializer.save()
                if user:
                    json = serializer.data
                    return Response(json, status=status.HTTP_201_CREATED)
            return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
    
    
    class BlacklistTokenUpdateView(APIView):
        permission_classes = [AllowAny]
        authentication_classes = ()
    
        def post(self, request):
            try:
                refresh_token = request.data["refresh_token"]
                token = RefreshToken(refresh_token)
                token.blacklist()
                return Response(status=status.HTTP_205_RESET_CONTENT)
            except Exception as e:
                return Response(status=status.HTTP_400_BAD_REQUEST)

Это мои урлы

api/urls.py

from django.urls import path
from .views import CustomUserCreate, BlacklistTokenUpdateView

app_name = 'users'

urlpatterns = [
    path('create/', CustomUserCreate.as_view(), name="create_user"),
    path('logout/blacklist/', BlacklistTokenUpdateView.as_view(),
         name='blacklist')
]

core/urls.py

from django.contrib import admin
from django.urls import path, include
from django.conf.urls.static import static
from django.conf import settings
from rest_framework_simplejwt.views import (
    TokenObtainPairView,
    TokenRefreshView,
)


urlpatterns = [
    path('admin/', admin.site.urls),
    path("api/post/", include("post.api.urls", namespace="post")),
    path("api/post/audio/", include("post_audio.api.urls", namespace="postaudio")),
    path('api/comment/', include('comment.api.urls', namespace='comment')),
    path("api/categories/", include("post.api.urls", namespace="categories")),
    path("api/author/", include("author.api.urls", namespace="author")),
    path("api/favourites/", include("favourite.api.urls", namespace="favourite")),
    path('api/token/', TokenObtainPairView.as_view(), name='token_obtain_pair'),
    path('api/token/refresh/', TokenRefreshView.as_view(), name='token_refresh'),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 

Из того, что я видел, вы можете получить плохие запросы из двух мест: CustomUserCreate и BlacklistTokenUpdateView. Для облегчения отладки вы можете добавить логи, включая serializer.errorsCustomUserCreate) и внутри except в BlacklistTokenUpdateView. Хорошей практикой является избегание ловли общих исключений. Так вы будете точно знать, почему произошел сбой.

Можете ли вы включить информацию о вызове (вызовах) postman, который вы делаете? Ошибка 400, скорее всего, говорит о том, что проблема заключается в том, как вы построили запросы от этого инструмента. Пожалуйста, пришлите все заголовки, тело и полный URI. Вы можете экспортировать данные из консоли postman...

Значение email, которое вы отправляете, не является допустимым форматом email, и вы также не отправляете имя_пользователя, поэтому я подозреваю, что запросы не проходят проверку на уровне сериализатора.

Согласно вашему коду класс "CustomUserCreate" выдает 400 ошибку, если "serializer.is_valid()" возвращает false, я думаю, что вы не отправляете необходимые параметры в тело Postman.

в случае класса "BlacklistTokenUpdateView" также возвращается ошибка 400, если произошло какое-либо исключение

Вернуться на верх