Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将图像从媒体根目录保存到Django Rest序列化程序_Django_Image_Serialization_Django Rest Framework_Httprequest - Fatal编程技术网

将图像从媒体根目录保存到Django Rest序列化程序

将图像从媒体根目录保存到Django Rest序列化程序,django,image,serialization,django-rest-framework,httprequest,Django,Image,Serialization,Django Rest Framework,Httprequest,我目前正在从事一个项目,该项目允许移动应用程序用户将图像上传到Django服务器 以下是我对用户POST请求的看法: 类图像详细信息视图集(APIView): My ImageDetails浏览器: class ImageDetailsSerializer(serializers.ModelSerializer): class Meta: model = ImageDetails fields= ('image','status','category'

我目前正在从事一个项目,该项目允许移动应用程序用户将图像上传到Django服务器

以下是我对用户POST请求的看法:

类图像详细信息视图集(APIView):

My ImageDetails浏览器:

class ImageDetailsSerializer(serializers.ModelSerializer):  
    class Meta:
        model = ImageDetails
        fields= ('image','status','category', 'user')
代码总是返回HTTP 400错误,这意味着序列化程序无效

以下是我尝试应用但在这种情况下无效的解决方案:

  • 将媒体文件名从
    data1={'image':媒体文件名,'category':1,'status':'Y','user':user}
    更改为img,但它返回
    TypeError:不可JSON序列化
    错误

  • 将媒体文件名替换为
    媒体url/img.jpg
    ,它将返回相同的错误

  • 通过添加(请参见下面的代码)来更新序列化程序中的图像字段,但它确实有任何改进:

       class ImageDetailsSerializer(serializers.ModelSerializer):   
           image = serializers.ImageField(use_url=True)
           class Meta:
                model = ImageDetails
                fields= ('image','status','category', 'user')
    
  • 我的问题是:

  • 序列化程序的ImageField中应该存储什么?图像、图像URL或存储图像的目录

  • 这是保存远程用户数据的正确方法/技术吗?或者有没有其他有效的方法来实现这一点

  • 它是相对于媒体根的路径
  • 您可以将
    data1
    更改为
    request.data
    的副本,并将键“user”合并到新的dict中

  • 这个问题的答案是使用Django额外字段插件:D
    阅读了解更多详细信息。

    我已尝试通过添加
    request.data['image']=media\u文件名
    request.data['category']=1
    request.data['status']=Y'
    request.data['user']=user
    来编辑request.data['user']=user然后将我的请求更新为
    serializer=ImageDetailsSerializer(data=request.data)
    但我仍然有400个错误(序列化程序无效)。我认为您可以从请求将“图像”“状态”“类别”“用户”添加到post参数中。如果无效,可以打印验证错误的详细信息。
       class ImageDetailsSerializer(serializers.ModelSerializer):   
           image = serializers.ImageField(use_url=True)
           class Meta:
                model = ImageDetails
                fields= ('image','status','category', 'user')