Django - Невозможно прочитать медиафайлы
Я использую Django для создания веб-сайта, на который можно загрузить изображение и проверить, содержит ли оно узор Муара. Вот структура проекта:
В файле 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()