Django - Невозможно прочитать медиафайлы

Я использую Django для создания веб-сайта, на который можно загрузить изображение и проверить, содержит ли оно узор Муара. Вот структура проекта:

Project structure

В файле settings.py я указал следующий каталог для медиафайлов:

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

и в файле views.py я реализовал API, который будет получать изображение и определять муаровый рисунок следующим образом:

from django.core.files.storage import default_storage
def index(request):
    if request.method == 'POST':
        f = request.FILES['sentFile']
        response = {}
        fname = 'pic.jpg'
        fname2 = default_storage.save(fname, f)
        file_url = default_storage.url(fname2)
        image = Image.open(file_url)
        pred_label = moire_detect(image)
        response['label'] = pred_label
        return render(request, 'frontpage.html', response)
    else:
        return render(request, 'frontpage.html')

Однако, когда я пытаюсь открыть изображение с помощью модуля Image в Pillow, я получаю эту ошибку "No such file or directory: '/media/pic_O1TOyCK.jpg'".

Я не очень понимаю, что здесь происходит, потому что путь правильный. Любая помощь будет очень признательна.

Image.open не работает с url, но работает с обычными path.

Но file_url имеет /media/pic_O1TOyCK.jpg, который является relative url и может быть использован в HTML (чтобы получить http://localhost/media/pic_O1TOyCK.jpg), но он не может быть использован как обычный путь для прямого доступа к локальному файлу.

Вам лучше использовать fname2 с Image.open()

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