我无法使用Django Rest-framework上传图片 [英] I couldn't upload images using Django Rest-framework

查看:111
本文介绍了我无法使用Django Rest-framework上传图片的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我无法通过Django Rest-framework通过 POSTMAN 上传图像,但是我可以做同样的事情使用 Django Admin 。当我尝试调试代码时,发现 serializer.is_valid()总是错误的。

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.

这些是我的代码部分,

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',
    ),
}

这是我的源代码

推荐答案

您可以删除其他内容序列化程序中的 models.ImageField 字段将使用 serializer.ImageField 默认情况下。

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')

应该正常工作,您的视图代码是正确的

您还可以使用 generics.CreateAPIView 来减少代码。

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

如果它不起作用,请用<$ c更新您的答案$ c> serializer.errors ,您可以在 else 情况下进行检查

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

这篇关于我无法使用Django Rest-framework上传图片的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆