Quiero escribir un método de descanso sin modelo para poder enviar un archivo csv usando el módulo de solicitudes de python. Se debe acceder de forma remota a este archivo csv desde el servidor.
Por ejemplo, inicié sesión en mi proyecto mediante solicitudes y obtuve las cookies y los encabezados para poder pasarlo al siguiente método de solicitudes.
files = {'file': open('test.csv', 'rb')} response = requests.post(url, files=files, headers=api_headers, cookies=api_cookies)Entonces esta url debería ser: llamar a ese método de descanso.
vistas.py archivo:
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)Solo para tener en cuenta: estoy enviando un archivo csv usando el módulo de solicitudes.
¿Alguien puede ayudarme a escribir este método de descanso?
Vista normal de 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!"})ACTUALIZAR
# 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()) ]Después
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)Esto haría el truco para ti. http://www.django-rest-framework.org/api-guide/parsers/#fileuploadparser
# 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=204) # urls.py urlpatterns = [ # ... url(r'^upload/(?P<filename>[^/]+)$', FileUploadView.as_view()) ] # test with this curl curl -X POST -S -H -F "file=@something.jpg;type=image/jpg" 127.0.0.1:8000/upload/myfile/