【问题标题】:POST an image to django backend via Postman通过 Postman 将图像发布到 django 后端
【发布时间】:2021-08-11 17:05:27
【问题描述】:

我无法通过 post 请求将图像上传到后端 我正在使用 django 这是我的模型:

class Upload(models.Model):
    image_file = models.ImageField(upload_to='images',null=True)
   


    created=models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return str(self.id)

这是我的看法:

@csrf_exempt
def image_list(request):
    if request.method=='GET':
        images=Upload.objects.all()
        serializers=ImageSerializer(images,many=True)
        return JsonResponse(serializers.data,safe=False)

    elif request.method=='POST':
        data=JSONParser().parse(request)
        serializer=ImageSerializer(data=data, required=False)

        if serializer.is_valid():
            serializer.save()
            return JsonResponse(serializer.data,status=201)
        return JsonResponse(serializer.errors,status=400)

这是我的序列化程序,我认为问题出在 isValid 但我真的很新,我似乎无法弄清楚请帮助我。

from rest_framework import serializers
from .models import Upload



class ImageSerializer(serializers.ModelSerializer):
    class Meta:
        model=Upload
        fields=['id','image_file']
  

【问题讨论】:

    标签: django postman


    【解决方案1】:

    不要直接解析数据给文件。试试这个:

    serializer=ImageSerializer(data=request.FILES['image'], required=False)
    

    'image' 是您将图像作为值从邮递员发送的键。 试试这个,也请分享你得到它的确切错误,这没有帮助,还有其他问题的未来。

    【讨论】:

    • 感谢您的帮助,这是我得到的错误:{“non_field_errors”:[“无效数据。需要字典,但得到了 InMemoryUploadedFile。” ] } 在我按照您的建议更改了我的代码并停止使用我用来形成数据以导入图像的解析器之后
    • 不,这是我按照您的建议更改代码后现在遇到的错误
    • 好的,这是一个奇怪的错误。您可以分享您的来自 views.py 的内容吗?您还可以检查一下哪一行出现此错误吗?另外,如果问题解决了,你能告诉你你做了什么。
    • 你能分享views.py函数的新代码吗?你会检查哪一行出现了这个错误吗?
    猜你喜欢
    • 1970-01-01
    • 2019-11-03
    • 2012-04-03
    • 1970-01-01
    • 1970-01-01
    • 2022-10-18
    • 2021-11-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多