我正在尝试从邮递员中将多个文件发布到我的django应用程序中。我没有使用Forms,并且我的应用程序没有UI方面。这是我的视图类。
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,则Post具有三个键,两个代表文件,最后一个是字符串。在调试期间,我的请求没有字段Data,并且FILES为空,并且POST没有任何信息。任何指针将不胜感激。如果有帮助,我可以上传更多。
这不是重复的,因为他能够上载多个文件,而我没有上载任何文件。我正在努力弄清楚如何在请求中查找文件,并且由于它们不存在如何设置视图(而不是序列化)以接收多个文件。
答案 0 :(得分:1)
将视图类写为
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))})
答案 1 :(得分:0)
将上面的代码更改为如下所示,并在请求中包含标头'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"})