有没有一种方法可以在Django REST框架中使用可浏览的API上传文件? [英] Is there a way to upload files using the browsable API in Django REST framework?

查看:63
本文介绍了有没有一种方法可以在Django REST框架中使用可浏览的API上传文件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要测试上传文件的API.我如何通过可浏览的API执行此操作.可浏览的API页面如下:

I need to test an API that uploads a file. How do I do this from the browsable API. The browsable API page looks like this:

可以使用此界面上传文件吗?

Is there any way to upload files using this interface?

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/")

推荐答案

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

The Django REST framework automatically generates an appropriate form in the browsable API only when using Generic Based views. Switching to Generic Based views solved my problem.

使用以下更改,我可以获取文件上传字段

Using the following change I was able to get a file upload field

from rest_framework import generics  

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

    serializer_class = TrainingSerializer

这篇关于有没有一种方法可以在Django REST框架中使用可浏览的API上传文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆