Команда управления 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"