有没有办法在Django REST框架中使用可浏览的API上传文件?
我需要测试一个上传文件的API。如何从可浏览的API执行此操作。可浏览的API页面如下所示: 有没有办法用这个界面上传文件有没有办法在Django REST框架中使用可浏览的API上传文件?,django,python-2.7,django-rest-framework,Django,Python 2.7,Django Rest Framework,我需要测试一个上传文件的API。如何从可浏览的API执行此操作。可浏览的API页面如下所示: 有没有办法用这个界面上传文件 views.py: class TrainingData(APIView): """ API for getting the training data """ def post(self, request, format=None): """ Receives the data in the form of a POST request "
views.py
:
class TrainingData(APIView):
"""
API for getting the training data
"""
def post(self, request, format=None):
"""
Receives the data in the form of a POST request
"""
print request.data
serialized = TrainingSerializer(data=request.data)
if serialized.is_valid():
file_obj = request.data['file']
print "its working"
return Response(status=204)
return Response(serialized._errors, status=status.HTTP_400_BAD_REQUEST)
class TrainingSerializer(serializers.Serializer):
"""
Serializer for the training data input
"""
uploaded_file = serializers.FileField(use_url=settings.BASE_DIR+"/api/uploaded_files/")
serializers.py
:
class TrainingData(APIView):
"""
API for getting the training data
"""
def post(self, request, format=None):
"""
Receives the data in the form of a POST request
"""
print request.data
serialized = TrainingSerializer(data=request.data)
if serialized.is_valid():
file_obj = request.data['file']
print "its working"
return Response(status=204)
return Response(serialized._errors, status=status.HTTP_400_BAD_REQUEST)
class TrainingSerializer(serializers.Serializer):
"""
Serializer for the training data input
"""
uploaded_file = serializers.FileField(use_url=settings.BASE_DIR+"/api/uploaded_files/")
只有在使用基于泛型的视图时,Django REST框架才会在可浏览的API中自动生成适当的表单。切换到基于泛型的视图解决了我的问题 使用以下更改,我能够获得一个文件上载字段
from rest_framework import generics
class TrainingData(generics.CreateAPIView):
"API for getting the training data"
serializer_class = TrainingSerializer
使用未更改任何内容的模型序列化。可浏览的API页面看起来仍然与问题中的图片所示相同。我使用了基于泛型的视图,它成功了!