#django #django-rest-framework #django-views
Вопрос:
Я хочу отправить файл обратно в качестве ответа на мой запрос post , но я получаю эту ошибку файловый объект не сериализуется в формате json, так как же мне отправить файл обратно в качестве ответа на мой запрос post :
@api_view(['GET', 'POST'])
def Upload_list(request):
if request.method == 'GET':
queryset = Uploads.objects.all()
uploads=queryset.filter(owner=request.user)
serializer = UploadSerializer(uploads, many=True)
return Response(serializer.data)
elif request.method == 'POST':
serializer = UploadSerializer(data=request.data)
if serializer.is_valid():
serializer.save(owner=request.user)
respFile=list(File.objects.filter(id=str(File.objects.latest('created_at'))))
serializers=Fileserializers(respFile,read_only=True,many=True)
return Response(serializers)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Комментарии:
1. Для сериализации объекта необходимо использовать сериализатор
File
…2. Что делать, если вы используете
return Response(serializers.data)
3. у меня есть пользовательский сериализатор для объекта file, и я использовал его
Ответ №1:
Вы не можете прикрепить файл в сериализаторе для ответа. Вместо этого вы можете сделать одно из следующих действий.
- Вы можете прикрепить файл к заголовку запроса «Размещение содержимого»
ответ[‘Расположение содержимого’] = ‘вложение; имя файла=»файл.расширение»‘
- Отправьте ссылку на файл в своем ключе в сериализатор. Поведение сериализатора по умолчанию.
{‘file’:’http://absolute_url_to_my_file’}
Комментарии:
1. почему бы и нет, для меня это работает, я использую сериализатор для отправки файлов и их публикации
2. Не во время публикации данных, а при возврате ответа с файлом @Rihabsabri. Если есть и другие способы, если я пропущу, пожалуйста, поправьте меня.
3. при отправке данных я использую сериализатор, чтобы проверить, действительны ли они, и при возврате объекта файла в качестве ответа я использую другой сериализатор, чтобы преобразовать его в собственный тип данных python для отправки.