有没有办法在Django REST框架中使用可浏览的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 "

我需要测试一个上传文件的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
    """
    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页面看起来仍然与问题中的图片所示相同。我使用了基于泛型的视图,它成功了!