Как предварительно обработать загруженные изображения в представлениях с помощью фреймворка Django Rest и Django

#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) была обработана непосредственно перед сохранением в БД.

Это прекрасно работает.