【问题标题】:Is there a way to upload files using the browsable API in Django REST framework?有没有办法使用 Django REST 框架中的可浏览 API 上传文件?
【发布时间】:2015-11-25 12:04:18
【问题描述】:

我需要测试一个上传文件的 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)

serializers.py:

class TrainingSerializer(serializers.Serializer):
"""
Serializer for the training data input
"""

uploaded_file = serializers.FileField(use_url=settings.BASE_DIR+"/api/uploaded_files/")

【问题讨论】:

  • 使用模型序列化器
  • 这并没有改变任何东西。可浏览的 API 页面仍然与问题中的图片相同。
  • 我使用了 Generic Based 视图,效果很好!

标签: django python-2.7 django-rest-framework


【解决方案1】:

仅当使用基于通用的视图时,Django REST 框架才会在可浏览的 API 中自动生成适当的表单。切换到基于通用的视图解决了我的问题。

使用以下更改,我能够获得文件上传字段

from rest_framework import generics  

class TrainingData(generics.CreateAPIView):
    "API for getting the training data"

    serializer_class = TrainingSerializer

【讨论】:

    猜你喜欢
    • 2015-01-16
    • 2016-06-06
    • 1970-01-01
    • 2019-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-25
    • 1970-01-01
    相关资源
    最近更新 更多