我无法使用Django Rest-framework上传图片 [英] I couldn't upload images using 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屋!