首页 > 其他 > 详细

在rest_framwork中进行图片的多条存储时注意事项

时间:2021-01-13 10:36:43      阅读:24      评论:0      收藏:0      [点我收藏+]

注意事项:

# django 里面上传文件默认只处理单个文件上传,批量上传的时候request.FILES 的类型为 MultiValueDict,这种字典类是特殊定义的,要取得list 需要调用 getlist  方法:
1.在接收前端传送过来的图片时,如果是一张图片可以用
  files = request.FILES.get(‘files‘) 来取出图片对象,并且通过.name来获取图片名字
2.如果前端传送过来的图片是多张,那么则需要使用

  files = request.FILES.getlist(‘files‘),取出来一个存有图片对象的列表。通过for循环在进行操作
  

进行图片的多增

view.py

import os
class Image(ModelViewSet):
    queryset = models.Image.objects.all()
    serializer_class = serializer.CreateImageSerializer
    def create(self, request, *args, **kwargs):
        files = request.FILES.getlist(files)   #获取图片
        image_path={}
        for file in files:
            path=os.path.join(Cinematography,media, photo, file.name)   #拼接路径
            with open(path, wb) as f:            #写入文件
                for line in file:
                    f.write(line)
                image_path[file.name]=path
        print(image_path,type(image_path),999)
        ser = self.get_serializer(data=image_path)
      self.perform_create(ser)


  if ser.is_valid():
  ser.save() #调用序列化类的create方法
  return APIResponse(code=1,msg=‘成功‘)
  else:
  print(ser.errors)
  return APIResponse(code=0, msg=ser.errors)


    def perform_create(self, serializer):
    serializer.save()

serializer.py

class CreateImageSerializer(serializers.ModelSerializer):
    class Meta:
        model = models.Image
        fields = [image,id]
        extra_kwargs = {id:{read_only: True}}
    def validate(self, attrs):

        return attrs

 

在rest_framwork中进行图片的多条存储时注意事项

原文:https://www.cnblogs.com/ltyc/p/14270534.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!