Django rest framework: How to make a simple file upload API using viewsets.
This article is to show you how easy it is to make a simple file upload API using Django viewsets. There are other alternatives to do the same but in this article, we will be using a viewsets, a serializer, and Django default routing to make an API to upload any file.
I am writing this post to mention what I had been faced with when dealing Django rest framework file upload initially, which will support those who are trying to find out how to do so.
This article is just to shows how to make an API to upload a file and it is for starters, so the code does all the taking for this article. Just go through the source code to get more information.
This is the part where we define the
FileField and we will be using a
Serializer to serialize the request which has the file from our API.
The serializer has one field which is the
file_uploaded . This field will have the uploaded file when you send a post request with the file.
The views only accept GET requests and POST requests only.
In this example, we are using a
DefaultRouter which adds support for automatic URL routing to Django, and provides you with a simple, quick, and consistent way of wiring your view logic to a set of URLs.
This will make an API root when we go to https://localhost:8000.
DefaultRouter thus provides these URL routes to do the create, retrieve, update, delete (CRUD) for our API.
You should have a
createfunction in your API viewset or else the API root will be blank.
When you got to localhost:8000 you will see the API Root and on clicking the URL you will be redirected to the API page. So what I have done in my views is when a get request is sent it will give you a response saying
But when you send a POST request with a file you will get the response as
POST API and you have uploaded a <CONTENT TYPE> file The CONTENT TYPE is the type of file you have uploaded for example if you upload the HTML file you will get a response like follows.
The important thing to note down is that the upload portion of the API page will be blank if you don’t have the
putfunction in the view set.
source code: https://github.com/Joel-hanson/simple-file-upload
You can't perform that action at this time. You signed in with another tab or window. You signed out in another tab or…
Please provide your feedback and suggestions. Follow me to get the latest updates.