I couldn't upload images using Django Rest-framework

这一生的挚爱 提交于 2019-12-12 04:23:29

问题


I couldn't upload images using Django Rest-framework through POSTMAN , But I can do the same using Django Admin. When I try to debug the code, It's found that, serializer.is_valid() is always false.

These are my code parts,

views.py

class imageuploadView(APIView):
    def post(self, request,format=None):
        serializer=ImageSerializer(data=request.data)
        print serializer
        if serializer.is_valid():
            serializer.save()
            return  Response(data={"detail":"Image Uploaded !"})#data
        else:
            return Response(data={"detail":"Not Uploaded"})

models.py

class ImageUploadModel(models.Model):
    usr_id=models.IntegerField()
    upImg=models.ImageField(upload_to='media/')
    caption=models.CharField(max_length=50,default=None)

serializer.py

class ImageSerializer(serializers.ModelSerializer):
    upImg = serializers.ImageField(max_length=None,use_url=True)
    class Meta:
        model=ImageUploadModel
        fields=('usr_id','upImg','caption')

settings.py

STATIC_URL = '/static/'

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"),
    '/static/',
)

MEDIA_ROOT = os.path.join(BASE_DIR,'media')

MEDIA_URL = '/media/'
REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.IsAuthenticated',
    ),
}

Here is my Source Code


回答1:


You can delete additional field in your serializer, models.ImageField will use serializer.ImageField by default.

class ImageSerializer(serializers.ModelSerializer):

    class Meta:
        model=ImageUploadModel
        fields=('usr_id','upImg','caption')

It should just work, your view code is correct
You could also use generics.CreateAPIView to reduce a code.

class imageuploadView(generics.CreateAPIView):

    queryset = ImageUploadModel.objects.all()
    serializer_class = ImageSerializer

If it will not work, please update your answer with a serializer.errors, you can check it in else case



来源:https://stackoverflow.com/questions/41374640/i-couldnt-upload-images-using-django-rest-framework

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!