如何解决Django DRF PUT请求ImageField
我正在使用Django中的ImageField上传图像。当我获取要在前端显示的数据时,将图像保存在数据库中之后,我以以下格式获取图像:
{"pk":5,"employee_image":"/media/emp_temp_mast/5.png","first_name":"TEST",}
更改前端的数据后,我以以下形式发送对相应条目的PUT请求:
{"pk":5,"first_name":"DATA CHANGED",}
但是发出请求后出现以下错误:
employee_image: ["The submitted data was not a file. Check the encoding type on the form."]
我应该如何从前端调用PUT请求。
解决方法
@Ross Rogers的建议奏效了,但我觉得它可能会有些乏味,因为我们希望每个客户端应用程序都意识到,他们必须在打算发出的每个UPDATE请求上取消ImageField。客户端应该能够进行这种抽象,并且不必担心ImageField的处理。
为此,我对后端接收ImageField的视图进行了以下更改。
class Emp_DetailView(APIView):
def get_object(self,pk):
try:
return db_data
except Emp_Mast.DoesNotExist:
raise Http404
def put(self,request,pk,format=None):
db_data = self.get_object(pk)
if(db_data["employee_image"] and db_data["employee_image"].startswith('http'))):
img_name = dataDict["employee_image"].split("/")[-1]
emp_img_temp = ContentFile(requests.get(dataDict["employee_image"]).content,name=img_name)
dataDict["employee_image"] = emp_img_temp
serializer = Emp_Mast_Serializer(db_data,data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
return Response(serializer.errors,status=status.HTTP_400_BAD_REQUEST)
在图像URL上发送GET请求,然后将结果保存为可用于发送PUT请求的文件格式
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。