我想编写一个没有模型的 rest 方法,以便我可以使用 python requests 模块发送一个 csv 文件。应从服务器远程访问此 csv 文件。
例如 - 我已使用请求登录到我的项目并获取 cookie 和标头,以便我可以将其传递给以下请求方法..
files = {'file': open('test.csv', 'rb')}
response = requests.post(url, files=files, headers=api_headers,
cookies=api_cookies)
所以这个 url 应该是:调用那个 rest 方法。
视图.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 文件。
任何人都可以帮助我如何编写这个休息方法吗?
普通的 Django 视图
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!"})
更新
# views.py
class FileUploadView(views.APIView):
parser_classes = (FileUploadParser,)
def post(self, request, filename, format=None):
file_obj = request.data['file']
# ...
# do some stuff with uploaded file
# ...
return Response(status=200)
# urls.py
urlpatterns = [
# ...
url(r'^upload/(?P<filename>[^/]+)$', FileUploadView.as_view())
]
然后
url = 'http://127.0.0.1:8000/upload/test.csv' #filename should be in url
files = {'file': open('test.csv', 'rb')}
response = requests.post(url, files=files, headers=api_headers,
cookies=api_cookies)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句