Загрузка изображений во фреймворке Django-React возвращает ошибку 403

Я создаю приложение на Django-React, которое требует, чтобы я загрузил несколько изображений в папку. Когда я нажимаю на кнопку загрузки, я получаю ошибку 403 на запрос. Если посмотреть в консоль, то в ответе говорится: "CSRF Failed: CSRF-токен отсутствует или неверен". Я пробовал добавить декоратор @csrf_exempt над функцией в views.py, но это не помогает. Вот выдержка из соответствующего кода:

settings.py

MEDIA_URL = '/upload/'
MEDIA_ROOT = os.path.join(BASE_DIR, '..', 'frontend', 'build', 'static', 'assets')

urls.py

from django.conf import settings
from django.conf.urls.static import static
from django.contrib import admin
from django.urls import path, re_path
from django.views.generic import TemplateView
from woundapp import views 
from rest_framework.urlpatterns import format_suffix_patterns

urlpatterns = [
    path('upload/', views.upload_images),
    path('admin/', admin.site.urls),
    ...
    re_path(r".*", TemplateView.as_view(template_name="index.html")),
]

urlpatterns = format_suffix_patterns(urlpatterns)

if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

models.py

from django.db import models

class Image(models.Model):
    image_url = models.ImageField(upload_to='unprocessed/')

serializers.py

from rest_framework import serializers
from .models import Image

class ImageSerializer(serializers.ModelSerializer):
  
    class Meta:
        model = Image
        fields = [
            'image_url'
            ]

views.py

from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt
import os 
from .models import Image
from .serializers import ImageSerializer
import requests
from rest_framework.decorators import api_view
from rest_framework.response import Response
from rest_framework import status 

@api_view(['POST'])
@csrf_exempt
def upload_images(request, format=None):
    if request.method == 'POST':
        print(request.data.get("images"))
        serializer = ImageSerializer(data=request.data, many=True)
        if serializer.is_valid():
            serializer.save()
            images = request.data.get("images")
            Image.objects.create(image=images)
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        else:
            return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

Однако, если я вручную загружаю изображения из http://127.0.0.1:8000/admin/, это работает для меня.

Может кто-нибудь подскажет мне, если я делаю что-то не так?

Заранее спасибо.

Я видел некоторые сообщения, предлагающие использовать декоратор @csrf_exempt, и я попробовал, но это не работает.

Думаю, вам нужно добавить корень папки image следующим образом...

MEDIA_URL = '/upload/'
MEDIA_ROOT = os.path.join(BASE_DIR, '..', 'upload', 'frontend', 'build', 'static', 'assets')
Вернуться на верх