如何编写没有模型的Django REST Api来使用请求发送文件

时间:2017-04-10 09:50:11

标签: python django rest python-requests

我想编写一个没有模型的rest方法,以便我可以使用python请求模块发送一个csv文件。 应该从服务器远程访问此csv文件。

例如 - 我已使用请求登录到我的项目并获取cookie和标题,以便我可以将其传递给以下请求方法..

files = {'file': open('test.csv', 'rb')}
response = requests.post(url, files=files, headers=api_headers,
                      cookies=api_cookies)

所以这个url应该是:调用rest方法。

views.py文件:

class FileUploadView(APIView):
    parser_classes = (FileUploadParser,)

    def post(self, request, format=None):
        csvfile = request.data['file']
        #reader = csv.DictReader(csvfile)
        #for r in reader:
            #print(r)
        return Response(status=204)

请注意 - 我正在使用请求模块发送csv文件。

任何人都可以帮我解释如何编写这种休息方法吗?

2 个答案:

答案 0 :(得分:3)

普通django视图

c

<强>更新

char **

然后

def myview(request):
    f = request.FILES['file']
    with open('some/folder/name.txt', 'wb+') as destination: 
        #f.name or f.filename (dont know which one)will get filename.So you can replace it name.txt
        for chunk in f.chunks():
            destination.write(chunk)
    return JsonResponse({"message": "Uploaded!"})

答案 1 :(得分:1)

这可以帮到你。 http://www.django-rest-framework.org/api-guide/parsers/#fileuploadparser

<ContextMenu x:Key="CharacterMenu" ItemsSource="{Binding SceneAddMenu}">
    <ContextMenu.ItemContainerStyle>
        <Style TargetType="MenuItem">
            <Setter Property="Header" Value="{Binding Displayname}" />
            <Setter Property="Command" Value="{Binding ContextMenuCommand} " />
        </Style>
    </ContextMenu.ItemContainerStyle>
</ContextMenu>