Django Next.js обработка ответов при регистрации

Я создаю свое первое приложение Django + Next.js и хочу вывести предупреждение при регистрации пользователя, если имя пользователя или email уже существует.

В настоящее время, если пользователь выбирает имя пользователя/электронную почту, которая уже существует, возникает ошибка 400 (то, что я хочу), в противном случае все работает нормально. Когда я пробую это на postman, я получаю явную проблему (имя пользователя уже существует или email уже существует). Но мне не удалось добиться этого на моем фронтенде, даже в консоли я не вижу никакого сообщения.

RegisterView :

class RegisterView(APIView):
permission_classes = (permissions.AllowAny, )

def post(self, request):
    try:
        data = request.data
        email = data['email']
        username = data['username']
        password = data['password']
        re_password = data['re_password']

        if password == re_password:
            if len(password) >= 8:
                if not User.objects.filter(username=username).exists():
                    if not User.objects.filter(email=email).exists():
                        user = User.objects.create_user(
                            email=email,
                            username=username,
                            password=password,
                        )

                        user.save()

                        if User.objects.filter(username=username).exists():
                            return Response(
                                {'message': 'Account created successfully'},
                                status=status.HTTP_201_CREATED)
                            
                        else:
                            return Response(
                                {'message': 'Something went wrong when trying to create account'},
                                status=status.HTTP_500_INTERNAL_SERVER_ERROR)
                    else:
                        return Response(
                            {'message': 'Account with this email already exists'},
                            status=status.HTTP_400_BAD_REQUEST,)       
                else:
                    return Response(
                        {'message': 'Username already exists'},
                        status=status.HTTP_400_BAD_REQUEST)
            else:
                return Response(
                    {'message': 'Password must be at least 8 characters in length'},
                    status=status.HTTP_400_BAD_REQUEST)
        else:
            return Response(
                {'message': 'Passwords do not match'},
                status=status.HTTP_400_BAD_REQUEST)
    except:
        return Response(
            {'message': 'Something went wrong when trying to register account'},
            status=status.HTTP_500_INTERNAL_SERVER_ERROR)

Auth.js

export const register = (
    email,
    username,
    password,
    re_password
    ) => async dispatch => {
    const body = JSON.stringify({
        email,
        username,
        password,
        re_password});


  try {
    const res = await fetch(`${API_URL}/api/account/register`, {
        method: 'POST',
        headers: {
            'Accept': 'application/json',
            'Content-Type': 'application/json',
        },
        body: body
    });
    if (res.status === 201) {
        console.log(res)
        dispatch({type: REGISTER_SUCCESS});
    } else {
        console.log(res)
        dispatch({type: REGISTER_FAIL});
    }        
        
  } catch(err) {
    dispatch({type: REGISTER_FAIL});
    alert('Test');
  }

Console error

И вот что я получаю в консоли. В этом случае я хотел бы иметь "message" : "Имя пользователя уже существует"

Как мне это сделать?

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