Django JsonResponse возвращает «Необходимы параметры года и месяца», несмотря на то, что параметры присутствуют в запрос ⇐ Python
Django JsonResponse возвращает «Необходимы параметры года и месяца», несмотря на то, что параметры присутствуют в запрос
Я использую «fullcalendar» и хочу отправить месяц и год в представление django и получить общее количество часов за каждый день в этом месяце из этого API: «api/get_calendar_data/», чтобы правильно отобразить календарь. Но затем я получаю неожиданный ответ, в котором говорится, что ему нужны параметры, пока они присутствуют в запросе.
Я предоставлю код, и вы получите то, что я делаю.
приборная панель.html:
calendar.js:
function updateCalendar(месяц, год) { console.log(год); console.log(месяц); $.ajax({ url: "/api/get_calendar_data/", // в мое представление django для получения данных метод: «ПОЛУЧИТЬ», data: { год: год, месяц: месяц }, // в представление django для отправки месяца и года успех: функция (данные) { // data = { '2024-02-01': 5, '2024-02-02': 7, ..} for (укажите дату в данных) { пусть часыWorked = parseFloat(данные [дата]); пусть CalendarDate = новая дата (дата); пусть formattedDate = CalendarDate.toISOString().slice(0, 10); //чтобы получить номер дня 2024-04-23 -> 23 пусть dayElement = CalendarEl.querySelector( `[data-date="${formattedDate}"]` ); если (отработано часов >= 7) { dayElement.style.backgroundColor = "#5cb85c"; //законченная работа } еще { dayElement.style.backgroundColor = "#d9534f"; //не закончено } } }, ошибка: функция (xhr, статус, ошибка) { console.error("Ошибка получения данных календаря:", error); }, }); } //инициализируем полный календарь document.addEventListener("DOMContentLoaded", function () { let CalendarEl = document.getElementById("календарь"); пусть календарь = новый FullCalendar.Calendar(calendarEl, {}); календарь.рендер(); пусть currentDate = Calendar.getDate(); пусть currentMonth = currentDate.getMonth() + 1; пусть currentYear = currentDate.getFullYear(); updateCalendar(текущийМесяц, ТекущийГод); //проходящий месяц и год }); views.py:
класс CalendarDataView(View): def get_firstday_lastday_специфический_месяц(я, год, месяц): first_day_current_month = дата (год, месяц, 1) последний_день_текущий_месяц = дата(год, месяц, календарь.диапазон месяцев(год, месяц)[1]) вернуть первый_день_текущий_месяц, последний_день_текущий_месяц def get(сам, запрос): print("запрос.GET: ",запрос.GET) если «год» в request.GET и «месяц» в request.GET: пытаться: год = int(request.GET.get("год")) месяц = int(request.GET.get("месяц")) print("год + месяц = ", год + месяц) start_date, end_date = self.get_firstday_lastday_specified_month(год, месяц) all_month_days = {str(start_date + timedelta(days=i)): 0 для i в диапазоне((end_date - start_date).days + 1)} data = ActivityLogs.objects.filter(user=request.user, date__range=[start_date, end_date]) \ .values('дата') \ .annotate(total_hours=Sum('hours_worked')) \ .order_by("дата") для элемента в данных: all_month_days[str(item['date'])] = item['total_hours'] вернуть JsonResponse(all_month_days) кроме исключения как e: return JsonResponse({'error': str(e)}, status=500) еще: return JsonResponse({'ошибка': 'Необходимы параметры года и месяца'}, status=400) URL:
path('api/get_calendar_data/',views.CalendarDataView.as_view(), name='get_calendar_data'), и единственный ответ, который я получаю:
{ "error": "Необходимы параметры года и месяца" } хотя запрос на печать в представлении печатается вместе с «год+месяц»:
request.GET: 2026 год Я просто не понимаю, почему бы не вернуть диктовку с данными зонда?
Я использую «fullcalendar» и хочу отправить месяц и год в представление django и получить общее количество часов за каждый день в этом месяце из этого API: «api/get_calendar_data/», чтобы правильно отобразить календарь. Но затем я получаю неожиданный ответ, в котором говорится, что ему нужны параметры, пока они присутствуют в запросе.
Я предоставлю код, и вы получите то, что я делаю.
приборная панель.html:
calendar.js:
function updateCalendar(месяц, год) { console.log(год); console.log(месяц); $.ajax({ url: "/api/get_calendar_data/", // в мое представление django для получения данных метод: «ПОЛУЧИТЬ», data: { год: год, месяц: месяц }, // в представление django для отправки месяца и года успех: функция (данные) { // data = { '2024-02-01': 5, '2024-02-02': 7, ..} for (укажите дату в данных) { пусть часыWorked = parseFloat(данные [дата]); пусть CalendarDate = новая дата (дата); пусть formattedDate = CalendarDate.toISOString().slice(0, 10); //чтобы получить номер дня 2024-04-23 -> 23 пусть dayElement = CalendarEl.querySelector( `[data-date="${formattedDate}"]` ); если (отработано часов >= 7) { dayElement.style.backgroundColor = "#5cb85c"; //законченная работа } еще { dayElement.style.backgroundColor = "#d9534f"; //не закончено } } }, ошибка: функция (xhr, статус, ошибка) { console.error("Ошибка получения данных календаря:", error); }, }); } //инициализируем полный календарь document.addEventListener("DOMContentLoaded", function () { let CalendarEl = document.getElementById("календарь"); пусть календарь = новый FullCalendar.Calendar(calendarEl, {}); календарь.рендер(); пусть currentDate = Calendar.getDate(); пусть currentMonth = currentDate.getMonth() + 1; пусть currentYear = currentDate.getFullYear(); updateCalendar(текущийМесяц, ТекущийГод); //проходящий месяц и год }); views.py:
класс CalendarDataView(View): def get_firstday_lastday_специфический_месяц(я, год, месяц): first_day_current_month = дата (год, месяц, 1) последний_день_текущий_месяц = дата(год, месяц, календарь.диапазон месяцев(год, месяц)[1]) вернуть первый_день_текущий_месяц, последний_день_текущий_месяц def get(сам, запрос): print("запрос.GET: ",запрос.GET) если «год» в request.GET и «месяц» в request.GET: пытаться: год = int(request.GET.get("год")) месяц = int(request.GET.get("месяц")) print("год + месяц = ", год + месяц) start_date, end_date = self.get_firstday_lastday_specified_month(год, месяц) all_month_days = {str(start_date + timedelta(days=i)): 0 для i в диапазоне((end_date - start_date).days + 1)} data = ActivityLogs.objects.filter(user=request.user, date__range=[start_date, end_date]) \ .values('дата') \ .annotate(total_hours=Sum('hours_worked')) \ .order_by("дата") для элемента в данных: all_month_days[str(item['date'])] = item['total_hours'] вернуть JsonResponse(all_month_days) кроме исключения как e: return JsonResponse({'error': str(e)}, status=500) еще: return JsonResponse({'ошибка': 'Необходимы параметры года и месяца'}, status=400) URL:
path('api/get_calendar_data/',views.CalendarDataView.as_view(), name='get_calendar_data'), и единственный ответ, который я получаю:
{ "error": "Необходимы параметры года и месяца" } хотя запрос на печать в представлении печатается вместе с «год+месяц»:
request.GET: 2026 год Я просто не понимаю, почему бы не вернуть диктовку с данными зонда?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение