def create(self, validated_data): #因为序列化关联sku选项是read_only =True,不参与序列化返回 #所以这里采用sefl.context(是个字典数据,保存了请求对象request )获取sku sku_id = self.context['request'].data.get('sku') ''' self下的context(字典类型),中有request(objects 是个请求对象,) request.data(请求体中的的数据),下有'sku' ''' # 获取保存的图片数据 image_data = validated_data.get('image') # 建立FastDFS的连接对象 client = Fdfs_client(settings.FASTDFS_CONF) # 上传图片数据 read 读取二进制数据通过buffer上传 结果是一个字典 res = client.upload_by_buffer(image_data.read()) # 判断上传状态 if res['Status'] != 'Upload successed.': raise serializers.ValidationError('图片上传失败') # 上传成功 获取返回图片的路径信息 img_url = res['Remote file_id'] # 将路径信息保存在图片表 image = SKUImage.objects.create(image=img_url, sku_id=sku_id) # 调用详情页静态化方法 sku_id = image.sku.id get_detail_html.delay(sku_id) # 返回图片表对象 return image
def update(self, instance, validated_data): image_data = validated_data.get('image') client = Fdfs_client(settings.FASTDFS_CONF) res = client.upload_by_buffer(image_data.read()) if res['Status'] != 'Upload successed.': raise serializers.ValidationError('上传图片失败') image_url = res['Remote file_id'] instance.image = image_url instance.save() # 调用异步任务 get_detail_html.delay(instance.sku.id) return instance
def create(self, validated_data): # self.context是个字典数据,里面保存了请求对象request sku_id = self.context['request'].data.get('sku') # 获取要保存的图片数据 image_data = validated_data.get('image') # 链接FastDFS client = Fdfs_client(settings.FASTDFS_CONF) # 上传图片 res = client.upload_by_buffer(image_data.read()) # 判断上传状态 if res['Status'] != 'Upload successed.': raise serializers.ValidationError('上传图片失败') # 上传成功获取图片路径信息 img_url = res['Remote file_id'] # 将路径信息保存在图片表中 image = SKUImage.objects.create(image=img_url, sku_id=sku_id) # 调用异步任务 get_detail_html.delay(image.sku.id) # 返回图片表对象 return image
def update(self, instance, validated_data): # 获取保存的图片数据 image_data = validated_data.get('image') # 建立FastDFS的连接对象 client = Fdfs_client(settings.FASTDFS_CONF) # 上传图片数据 read 读取二进制数据通过buffer上传 结果是一个字典 res = client.upload_by_buffer(image_data.read()) # 判断上传状态 if res['Status'] != 'Upload successed.': raise serializers.ValidationError('图片上传失败') # 上传成功 获取返回图片的路径信息 img_url = res['Remote file_id'] #更新图片路径 instance.image = img_url instance.save() # 调用详情页静态化方法 sku_id = instance.sku.id get_detail_html.delay(sku_id) # 返回图片表对象 return instance
def create(self, validated_data): #self.context 属性是字典数据,含有request sku_id = self.context['request'].data.get('sku') #获取保存的图片数据 image_data = validated_data.get('image') #建立FastDFS的连接对象 client = Fdfs_client(settings.FASTDFS_CONF) #上传图片数据 #image_data.read() 获得图片的二进制数据 res = client.upload_by_buffer(image_data.read()) #判断上传状态 if res['Status'] != 'Upload successed.': raise serializers.ValidationError('图片上传失败') #上传成功返回图片的路径信息 img_url = res['Remote file_id'] #将路径信息保存在数据表中 image = SKUImage.objects.create(image=img_url, sku_id=sku_id) #调用详情页静态化的方法 sku_id = image.sku_id get_detail_html.delay(sku_id) #返回图片表对象 return image
def update(self, instance, validated_data): request = self.context.get('request') # 获取前端的信息,图片 image = request.FILES.get('image') # 创建连接对象,导入fdfs的配置文件 client = Fdfs_client(Fdfs_config_path) # 向fastdfs系统上传图片 ret = client.upload_by_buffer((image.read())) # 判断是否上传成功 if ret['Status'] != 'Upload successed.': raise serializers.ValidationError({'error': '图片上传失败'}) # 获取上传后路径 image_url = ret['Remote file_id'] # # 获取sku_id # sku_id = int(request.data.get('sku')[0]) # sku = ser.validated_data['sku'] # 更新操作图片表中 instance.image = image_url instance.save() # 生成新的详情页页面 get_detail_html.delay(instance.sku.id) return instance