I am using Django RestFramework. I would like to if it is possible to upload a file and title using url parameter. For example,
http://127.0.0.1:8000/upload/title='some-title'&file_url='some-path'
Can anyone please guide as i am beginner in django rest framework.Here is my code:
Model:
class MyModel(models.Model):
title = models.TextField(max_length=100, blank=True, default='No title', unique=True)
file_url = models.FileField(upload_to='files/')
created_at = models.DateTimeField(auto_now_add=True)
class Meta:
ordering = ('created_at',)
Serializers:
class MySerializer(serializers.ModelSerializer):
file_url = serializers.FileField(max_length=None, required=True)
class Meta:
model = MyModel
fields = ('id', 'title', 'file_url', 'created_at')
Views:
class MyViewSet(ModelViewSet):
queryset = MyModel.objects.all()
serializer_class = MySerializer
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
class MyAPIView(generics.CreateAPIView):
serializer_class = MySerializer
permission_classes = (permissions.IsAdminUser,)
def get_queryset(self):
title = self.lookup_field['title']
file_path = self.lookup_field['file']
obj = MyModel.objects.create(title=title, file_url=file_path)
serializer = MySerializer(obj)
return Response(serializer.data)
Urls:
router = DefaultRouter()
router.register(r'django', MyViewSet)
urlpatterns = [
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),
url(r'^upload/(>P<title>[\w+])&?P(<file>[\w+])/$', MyAPIView.as_view()),
url(r'^', include(router.urls))
]
I want to get the result like: