#django #django-rest-framework #django-views #django-rest-viewsets
Вопрос:
Я решил обработать загружаемое изображение, чтобы получить местоположение GPS в виде.
код работает и сохраняется в БД, но мне предлагают сделать это с FileNotFoundError at /api/v1/addWaste/ [Errno 2] No such file or directory: '/tmp/tmpnsym9i2b.upload.jpg'
ошибкой.
Я узнал, что это связано с тем, что моя загрузка превышает 2,5 Мб.
Это сложнее, потому что данные в конечном итоге сохраняются в базе данных.
вот фрагмент кода моих представлений, который я использую в рамках Django Rest Для создания общего представления
def create(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data)
# file = request.FILES['files']
serializer.is_valid(raise_exception=True)
# geospatial fields
picture=(serializer.validated_data['field_picture'])
print(picture.temporary_file_path())
latitude, longitude = get_coordinates(picture)
serializer.validated_data['latitude']= latitude
serializer.validated_data['longitude'] = longitude
# geom
serializer.validated_data['geom'] = Point(latitude,longitude)
serializer.save()
if serializer.save():
return Response({
'Response': 'Waste point Created suceesfully',
'payload': serializer.data
})
```
Here is a copy of my terminal debug message
/.local/share/virtualenvs/Backend-bhMgLIsh/lib/python3.8/site-packages/django/core/files/move.py», строка 56, в file_move_safe
с открытым(имя файла old_file_, ‘rb’) в качестве файла old_file:
Файлообменник: [Ошибка 2] Такого файла или каталога нет: ‘/tmp/tmpnsym9i2b.upload.jpg’
[02/Июнь/2021 11:24:51] «POST /api/v1/addWaste/ HTTP/1.1» 500 179179
Thank you for your help.
Ответ №1:
Таким образом, у Django есть способ обработки больших загрузок файлов, он передает их через папку tmp на вашем локальном компьютере.
Итак, как решилась моя задача, состояла в том, чтобы предварительно обработать все в моделях.py с помощью метода сохранения создается таблица.
следовательно, вся логика 9my) была обработана непосредственно перед сохранением в БД.
Это прекрасно работает.