Загрузка нескольких файлов с использованием Django rest Framework без использования форм - PullRequest
0 голосов
/ 18 сентября 2018

Я пытаюсь опубликовать из Почтальона несколько файлов в моем приложении django.Я не использую формы, и в моем приложении нет аспекта пользовательского интерфейса.Вот мой класс просмотра.

class FileUploader(APIView):
    '''
    Rest API for FileUploader
    '''
    permission_classes = (AllowAny,)
    parser_classes = (MultiPartParser, )

    @csrf_exempt
    def post(self, request):
        retval = Response(request.data, status=status.HTTP_201_CREATED)
        logger.info('New post with the following data: {}'.format(request.data))

При этом он говорит: «TypeError: init () отсутствует 3 обязательных позиционных аргумента:« META »,« input_data »и« upload_handlers »«Если я использую FormView, мой пост имеет три ключа, два представляют файлы, последний является строкой.Во время отладки мой запрос не имеет поля Data, и FILES пуст, а POST не имеет никакой информации.Любые указатели будут оценены.Я могу загрузить больше, если это поможет.

Это не дубликат, потому что он смог загрузить несколько файлов, а мой не загружает никаких файлов.Я изо всех сил пытаюсь выяснить, как найти файлы в запросе и, поскольку их там нет, как настроить представления (а не сериализацию) для получения нескольких файлов.

введите изображениеописание здесь

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Напишите класс представления как

from rest_framework.views import APIView
from rest_framework.response import Response


class FileUploader(APIView):
    '''
    Rest API for FileUploader
    '''

    permission_classes = (AllowAny,)

    def post(self, request, *args, **kwargs):
        files_list = request.FILES
        data = request.data
        return Response(data={"files": "{} files uploaded".format(len(files_list)),
                              "data": "{} data included".format(len(data))})

и отправьте его, используя form-data в POSTMAN Screenshot

0 голосов
/ 18 сентября 2018

измените приведенный выше код, как показано ниже, и включите в запрос заголовок 'Content-Type': 'multipart/form-data'.

class FileUploader(APIView):
    '''
    Rest API for FileUploader
    '''
    permission_classes = (AllowAny,)
    parser_classes = (MultiPartParser, )

    @csrf_exempt
    def post(self, request, *args, **kwargs):
        print(request.data)
        return Response({"message": "success"})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...