Данные не отправляются на конечную точку django [duplicate]

Я пытаюсь отправить данные в конечную точку django. Которые затем будут использоваться для сравнения с записями в базе данных. Данные не отправляются на конечную точку, поэтому я получаю ошибку Invalid request в консоли браузера при вызове конечной точки api/login.Вот мой фронтенд код

    import React, { useState } from 'react';
import { Link, useNavigate } from 'react-router-dom';
import '../css/login.css';
import axios from 'axios';

function Login() {
  const [formData, setFormData] = useState({
    username: '',
    password: ''
  });

  const navigate = useNavigate();

  const handleChange = (e) => {
    const { name, value } = e.target;
    setFormData(prevState => ({
      ...prevState,
      [name]: value
    }));
  };

  const handleSubmit = async (event) => {
    event.preventDefault();
    try {
      const response = await axios.post('http://127.0.0.1:8000/api/login/', formData);
      if (response.data.message) {
        switch (response.data.role) {
          case 'Business Development Partner':
            navigate('/bdpdashboard');
            break;
          case 'Recruiter':
            navigate('/employeedashboard');
            break;
          case 'Manager':
            navigate('/managerdashboard');
            break;
          case 'Business Development Partner Manager':
            navigate('/bdpmdashboard');
            break;
          case 'Account Manager':
            navigate('/amanagerdashboard');
            break;
          default:
            console.error('Invalid role:', response.data.role);
        }
      } else {
        console.error('Login failed:', response.data.error);
      }
    } catch (error) {
      console.error('Login failed:', error);
    }
  };

  return (
    <div className="login-container">
      <h2>Login</h2>
      <form onSubmit={handleSubmit}>
        <div className="input-group">
          <label htmlFor="username">Username</label>
          <input
            type="text"
            id="username"
            name="username"
            value={formData.username}
            onChange={handleChange}
            required
          />
        </div>
        <div className="input-group">
          <label htmlFor="password">Password</label>
          <input
            type="password"
            id="password"
            name="password"
            value={formData.password}
            onChange={handleChange}
            required
          />
        </div>
        <button type="submit">Login</button>
      </form>
      <div className="register-link">
        <span>Don't have an account? </span>
        <Link to="/employeeregistration">Register</Link> 
      </div>
    </div>
  );
}

export default Login;

В api/login вызывается следующее представление

def verify_login(request):
    if request.method == 'POST':
        data = request.POST
        print(data)
        # Retrieve stored login details
        stored_login = LoginDetails.objects.get(username__iexact=data.get('username'))
        print(stored_login.username)

        if stored_login:
            # Compare the passwords directly
            if data.get('password') == stored_login.password:
                # Authentication successful
                user_role = stored_login.user_data.role if stored_login.user_data and stored_login.user_data.role else None
                print(user_role)
                return JsonResponse({'message': 'Login successful', 'role': user_role})
            else:
                # Password does not match
                return JsonResponse({'error': 'Invalid password'}, status=401)
        else:
            # Username not found
            return JsonResponse({'error': 'Invalid username'}, status=401)

    return JsonResponse({'error': 'Invalid request method'}, status=405)

Модель django, используемая в представлении

class LoginDetails(models.Model):
    user_data = models.OneToOneField(UserData, on_delete=models.CASCADE, null = True)
    username = models.CharField(max_length=255, unique=True, null=True)
    password = models.CharField(max_length=255, null=True)  # Note: It's recommended to use hashed passwords in production
    def __str__(self):
        return self.username

Когда я печатаю данные на терминале python, на котором запущен сервер django, я получаю следующее

<QueryDict: {}>

Почему данные не отправляются на конечную точку?

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