Автор:jsx:38 СООБЩЕНИЙ http://127.0.0.1:8000/api/register/ 404 (Не найден) - Django / React

Я пытаюсь внедрить систему аутентификации и стек в части регистрации

Когда я отправляю данные формы, я получаю обратно эту ошибку:

СООБЩЕНИЕ http://127.0.0.1:8000/api/register/ 404 ( Не найдено)

Вот часть моего кода

url.py
from django.urls import path
from rest_framework_simplejwt.views import TokenObtainPairView, TokenRefreshView
from .views import RegisterView, LoginView, RefreshTokenView

urlpatterns = [
    path("api/register/", RegisterView.as_view(), name="register"),
    path("api/login/", LoginView.as_view(), name="login"),
    path("api/token/refresh/", RefreshTokenView.as_view(), name="token_refresh"),
]
view.py
class RegisterView(APIView):
    permissions_classes = [AllowAny]
    
    def post(self, request):
        serializer = UserSerializer(data=request.data)
        if serializer.is_valid():
            user = serializer.save()
            return Response({"message": "User registered succefully"}, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

На стороне клиента; У меня есть утилита, которая создает baseUrl

import axios from "axios";

const API = axios.create({
    baseURL: "http://127.0.0.1:8000/api/",
    headers: {
        "Content-Type": "application/json",
    }
});

export default API;

И моя функция handleSubmit выглядит следующим образом;

const handleSubmit = async (e) => {
    e.preventDefault();
    setError(""); // Clear previous errors

    try {
        const endpoint = isSignup ? "register/" : "login/";
        const response = await API.post(endpoint, formData);

        if (isSignup) {
            alert("Registration successful!");
            setIsSignup(false); // Switch to login form
        } else {
            // Store JWT tokens
            localStorage.setItem("accessToken", response.data.access);
            localStorage.setItem("refreshToken", response.data.refresh);
            localStorage.setItem("role", response.data.role);

            console.log("Login successful:", response.data);
            alert("Login successful!");

            const roleRedirects = {
                "admin": "/admin-dashboard",
                "student": "/student-dashboard",
                "lecturer": "/lecturer-dashboard",
                "academic_registrar": "/registrar-dashboard"
            };

            window.location.href = roleRedirects[response.data.role] || "/dashboard";
        }
    } catch (error) {
        setError(error.response?.data?.error || "Something went wrong. Please try again.");
        console.error("Error:", error);
    }
};


Мне нужна как можно большая помощь, которую вы могли бы оказать

Вам следует исправить опечатку в RegisterView.

permissions_classes = [AllowAny]  # ❌ Incorrect

permission_classes = [AllowAny]  # ✅ Correct

Вы пытались запросить эту конечную точку в postman? Если проблема не устранена в postman, значит, проблема в вашем серверном коде и конечных точках. Если postman успешно обработал запрос, значит, ваш интерфейс не выбирает этот URL. Для этого вы должны открыть / перенаправить свой порт django с помощью ngrok

ngrok http 8000

Затем укажите общедоступный URL-адрес ngrok во внешнем интерфейсе

Например, если ngrok выдал вам url: https://dehde-343-hdcnd-324n/ -> 8000 , то во внешнем интерфейсе замените "http://127.0.0.1:8000" на "https://dehde-343-hdcnd-324n/"

Это решит вашу проблему, но если проблема все еще не устранена, попробуйте выполнить следующее:

Для целей тестирования укажите полный URL-адрес регистрации вашего сервера в baseUrl API следующим образом:

const API = axios.create({
    baseURL: "http://127.0.0.1:8000/api/register/",
    headers: {
        "Content-Type": "application/json",
    }
});

Также попробуйте удалить последнее "/" из конечной точки и протестировать

http://127.0.0.1:8000/api/register
Вернуться на верх