我无法使用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',
),
}
这是我的源代码 >
Here is my Source Code
推荐答案
您可以删除序列化程序中的其他字段,默认情况下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
如果它不起作用,请用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屋!