загрузка нескольких файлов в django rest framework - PullRequest
1 голос
/ 29 апреля 2019

Я хочу создать API, используя DRF, где я хочу загрузить два файла с двумя разными именами и текстовое поле со строкой json.На рисунке ниже показана моя попытка почтальона к API.

enter image description here

Пожалуйста, помогите мне правильно написать мой API.Я искал несколько сообщений в переполнении стека, но не нашел правильного решения.У меня нет моделей в зависимости от ввода, но я хочу создать отдельный API и хочу манипулировать этими файлами и json во время выполнения.

Ответы [ 2 ]

1 голос
/ 29 апреля 2019

Просто что-то вроде,

import json
from rest_framework.decorators import api_view
from rest_framework.response import Response


@api_view(['POST'])
def foo(request):
    attributes = json.loads(request.data['attributes'])  # will be a 'dict'
    xsd_file = request.data['xsd_file']  # "InMemoryUploadFile" instance
    Iccs_file = request.data['Iccs_file']  # "InMemoryUploadFile" instance
    return Response("some response")
0 голосов
/ 29 апреля 2019

Я предполагаю, что вы пишете представления на основе классов. вот ваш view.py

class multipleFileUpload(APIView):

    def post(self, request):
    """

    :param request: 
    :return: 
    """
    try:
        #this will read attributes other than file
        str_value = request.POST["attributes"]
        print(str_value)

        #check if any file send in request if yes read all files one by one
        if len(request.FILES) != 0:
           for key in request.FILES:
               file_obj = request.FILES[key]
               print(file_obj.read()) #getting contents of the file in bytes
        return JsonResponse({"res": "got files"})
    except Exception as e:
        print(str(e))
        return JsonResponse({"res": "error"})

добавьте эту строку в ваш urls.py

url (r'uploadFiles / $ ', views.multipleFileUpload.as_view (), name =' uploadFiles '),

Запустите ваш постмен с тем же параметром и дайте мне знать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...