Триггерная функция Python на Django + React

Я пытаюсь отправить данные из моего React frontend в Django backend и запустить функцию. Я разрабатываю Django REST API с использованием Django Rest Framework, и я настроил представление в приложении "Калькулятор" для обработки POST-запросов. Задача представления калькулятора - просто конкатенировать текст из фронтенда:

#app/calculator/views.py
from django.http import JsonResponse

def concat_text(request):
    if request.method == 'POST':
        received_text = request.POST.get('text', '')
        result = received_text + ' =)'
        print(result)
        return JsonResponse({'result': result})
    else:
        return JsonResponse({'error': 'Only POST requests are allowed'})

Однако, когда я делаю запрос с фронтенда React, я получаю ошибку 403 (Forbidden). Я отправляю текстовое значение через фронтенд следующим образом:

  const handleButtonClick = async (e) => {
    e.preventDefault();
    try {
      const response = await fetch(`${URL}/calculator/calculator/`, {
        method: 'POST',
        headers: {
          'Content-Type': 'application/json',
        },
        body: JSON.stringify({ text }),
      });

URL - это просто "http://localhost:8000". Я также определил урлы калькулятора:

#app/calculator/urls.py
from django.urls import path
from .views import concat_text

urlpatterns = [
    path('calculator/', concat_text),
]

Урлы моих приложений:

#app/urls.py
from django.contrib import admin
from django.urls import path, include
from django.conf.urls.static import static
from django.conf import settings
from drf_spectacular.views import SpectacularAPIView, SpectacularSwaggerView

from core import views as core_views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('health-check/', core_views.health_check, name='health-check'),
    path('schema/', SpectacularAPIView.as_view(), name='api-schema'),
    path(
        '',
        SpectacularSwaggerView.as_view(url_name='api-schema'),
        name='api-docs',
    ),
    path('user/', include('user.urls')),
    path('wallet/', include('wallet.urls')),
    path('simulation/', include('simulation.urls')),
    path('calculator/', include('calculator.urls')),
]

Ошибка указывает на проблему CSRF

Forbidden (CSRF cookie not set.): /calculator/calculator/
Вернуться на верх