python - 无法使用 post 方法中的另一个函数序列化 request.data。使用 Post 请求。DRF
问题描述
我对 Django 和 DRF 很陌生。我有一个带有 Image 和 ForeignKey 字段的模型。
class Image(models.Model):
image = models.ImageField(blank=False, null=False)
predicted_result = models.ForeignKey(PredictedIllness, on_delete=models.CASCADE)
序列化器:
class ImageSerializer(serializers.ModelSerializer):
class Meta:
model = Image
fields =['image','predicted_result']
还有一个观点:
class UploadImage(APIView):
def post(self, request, format=None):
serializer = ImageSerializer(data=request.data, partial=True)
if serializer.is_valid():
serializer.save()
return Response('Classified', status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def classify_image(self, image_file, image):
image = open_image(image)
pred_class, pred_idx, outputs = fastAi_learner.predict(image)
print(pred_class.data.item())
return pred_class.data.item()
因此,当我使用 POST 请求进行拍摄时,一切正常并返回 Response: 'Classified' withStatus 201。
但是,我想做的是自己对图像进行分类,使用分类图像功能。
def post(self, request, format=None):
try:
im = pilImage.open(request.data['image'])
if im.load():
predicted_condition = self.classify_image(image_file=request.data['image'].name,
image=request.data['image'])
request.data['predicted_result'] = predicted_condition
serializer = ImageSerializer(data=request.data, partial=True)
if serializer.is_valid():
serializer.save()
return Response(1, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
except IOError:
return Response('problems with image', status=status.HTTP_400_BAD_REQUEST)
出于某种原因,当我以完全相同的请求从 Postman 拍摄时,我收到以下 400 响应:
{
"image": [
"Upload a valid image. The file you uploaded was either not an image or a corrupted image."
]
}
什么可能导致抛出此错误?因为我发送完全相同的图像。以及如何正确地将自定义数据(不是来自请求)添加到序列化程序本身/请求?
解决方案
推荐阅读
- python - Python连接字节问题(二)
- javascript - TypeError:无法读取 Angular 8 中未定义的属性“sendNotification”
- dll - 如何让 gnatmake 为 Ada .dll 创建映射文件?
- npm - 错误代码:135 - 在 package.json 中调用 npm run protractor 时 ECONNREFUSED
- reactjs - ASP.NET Core 3.1 为反应应用程序提供静态文件:找到 index.html 和图标,但没有找到 js 文件
- ios - 使用 ReplayKit 广播时将 CMSampleBuffer 转换为 .mov
- here-api - “这些凭据不授权访问”(403)
- pyspark - Pyspark,如何使用udf计算泊松分布?
- php - Google 访问令牌不会在离线访问时自动刷新
- python - docker:来自守护进程的错误响应:OCI 运行时创建失败:没有这样的文件或目录”:未知