Команда управления Django не приводит к обновлению API во фронтенде: Отладка проблем с подключением между Django Backend и React Frontend

    from django.urls import path
    from .views import signup, ObtainTokenView, get_subjects_by_grade, save_strengths_weaknesses,    get_str_wkn, check_strength_status,update_strength_status,run_create_groups_command

    urlpatterns = [
        path('signup/', signup, name='signup'),
        path('login/', ObtainTokenView.as_view(), name='token_obtain_pair'),
        path('subjects/', get_subjects_by_grade, name='get_subjects_by_grade'),
        path('save-strengths-weaknesses/', save_strengths_weaknesses, name='save-strengths-weaknesses'),
        path('get_str_wkn/', get_str_wkn, name='get_str_wkn'),  
        path('check-strength-status/',check_strength_status, name='check_strength_status'),
        path('update-strength-status/', update_strength_status, name='update_strength_status'),
        path('run-create-groups/', run_create_groups_command, name='run_create_groups'),

    ]
        


  import React, { useState, useEffect } from 'react';
  import { jwtDecode } from 'jwt-decode'; // Adjusted import
  import axios from 'axios';
  import '../css/MakeGroup.css'; // Adjust the path as necessary

  const MakeGroup = () => {
    const [decodedToken, setDecodedToken] = useState(null);
    const [message, setMessage] = useState('');
    const [error, setError] = useState('');
    const [currentUserId, setCurrentUserId] = useState('');
    const [grade, setGrade] = useState('');

    useEffect(() => {
      const storedToken = localStorage.getItem('token');
      if (storedToken) {
        try {
          const decoded = jwtDecode(storedToken); // Use named import
          setDecodedToken(decoded);
          setCurrentUserId(decoded.user_id);
          setGrade(decoded.grade);
        } catch (error) {
          console.error('Error decoding token:', error);
        }
      }
    }, []);

    const handleCreateGroups = () => {
      if (!currentUserId || !grade) {
        setError('Error: Missing user information.');
        return;
      }
    
      console.log('Sending request with:', { current_user_id: currentUserId, grade });
    
      axios.post('http://localhost:8000/api/run-create-groups/', 
        { current_user_id: currentUserId, grade }, 
        {
          headers: {
            Authorization: `Bearer ${localStorage.getItem('token')}`
          }
        }
      )
      .then(response => {
        setMessage(response.data.message);
      })
      .catch(error => {
        setError(error.response ? error.response.data.error : error.message);
      });
    };
    
    console.log('MakeGroup component rendered!');

    return (
      <div className="make-group-wrapper">
        <div className="make-group-container">
          <h2 className="make-group-heading">Create Study Groups</h2>
          <button className="create-groups-button" onClick={handleCreateGroups}>
            Create Groups
          </button>
          {message && <p className="message-text">{message}</p>}
          {error && <p className="error-text">{error}</p>}
        </div>
      </div>
    );
  };

  export default MakeGroup;

Запуск команды управления Django:

Я выполнил пользовательскую команду управления Django, которая получает данные пользователя, создает учебные группы с помощью k-NN и предсказывает целевые баллы на основе самого слабого предмета. При запуске через оболочку Django команда работала, как и ожидалось, предоставляя правильные данные о пользователях, формируя группы и вычисляя целевые баллы. Интеграция с фронтендом:

Я попытался запустить эту функциональность из фронтенда React, сделав GET-запрос к конечной точке API Django, предназначенной для создания учебных групп на основе данных пользователя. Вызов API сработал корректно, и бэкенд предоставил ожидаемый ответ при тестировании с помощью таких инструментов, как curl или requests. Что я ожидал:

Я ожидал, что запуск команды управления из фронтенда React через API правильно выполнит логику создания группы в бэкенде и отразит изменения во фронтенде. В частности, я ожидал увидеть обновления в приложении React, которые бы указывали на успешное формирование группы и прогнозируемые целевые показатели. Текущая проблема:

Команда управления Django корректно работает в изоляции, но при попытке соединить ее с фронтендом React через API фронтенд не получает ожидаемых обновлений и не отражает изменений, основанных на обработке бэкэнда.

! curl -X GET "http://localhost:8000/api/run-create-groups/?current_user_id=93&grade=8"
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9. eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNzI1ODAzNTgxLCJpYXQiOjE3MjU3OTk5ODEsImp0aSI6IjI1MTVmMTU2NTE5NjQwNjZhMGE1M2UwMjhjYTNlMjU0IiwidXNlcl9pZCI6OTMsImVtYWlsIjoiYXJ5YW5AZ21haWwuY29tIiwidXNlcm5hbWUiOiJBcnlhbiIsImdyYWRlIjoiOCIsInN0YXRlIjoiTWl6b3JhbSJ9. VZ4Xgu31CNDNSgwOm63BYOhcrmSmh8nLNM9DLnJgK2A"

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