更新SKU表数据

1、 获取修改图片的详情信息

点就修改按钮时,我们需要先获取要修改的图片详情信息

接口分析

请求方式: GET /meiduo_admin/skus/images/(?P<pk>\d+)/

请求参数: 通过请求头传递jwt token数据。

在头部中携带要获取的图片商品ID

返回数据: JSON

 {"id": "图片id","sku": "SKU商品id","image": "图片地址"}
参数 类型 是否必须 说明
id int "图片id"
sku int SKU商品id
iamge str 图片地址

后端实现


# ImageView继承的是ModelViewSet 所以还是使用同一个类视图class ImageView(ModelViewSet):serializer_class = ImageSeriazlierqueryset = SKUImage.objects.all()pagination_class = PageNum# 获取关联的sku表数据def simple(self, request):data = SKU.objects.all()ser = SKUSeriazlier(data, many=True)return Response(ser.data)# 重写拓展类的保存业务逻辑def create(self, request, *args, **kwargs):# 创建FastDFS连接对象client = Fdfs_client(settings.FASTDFS_PATH)# 获取前端传递的image文件data = request.FILES.get('image')# 上传图片到fastDFSres = client.upload_by_buffer(data.read())# 判断是否上传成功if res['Status'] != 'Upload successed.':return Response(status=403)# 获取上传后的路径image_url = res['Remote file_id']# 获取sku_idsku_id = request.data.get('sku')[0]# 保存图片image = SKUImage.objects.create(sku_id=sku_id, image=image_url)# 返回结果return Response({'id': image.id,'sku': sku_id,'image': image.image.url},status=201  # 前端需要接受201状态码)

2、更新图片

接口分析

请求方式: PUT /meiduo_admin/skus/images/(?P<pk>\d+)/

请求参数: 通过请求头传递jwt token数据。

表单提交数据:"sku": "SKU商品id","image": "SKU商品图片"
参数 类型 是否必须 说明
sku str SKU商品id
image Fiel SKU商品图片

返回数据: JSON

 {"id": "图片id","sku": "SKU商品id","image": "图片地址"}
参数 类型 是否必须 说明
id Int 图片id
sku int SKU商品id
image str 图片地址

后端实现

from django.conf import settings
from rest_framework.viewsets import ModelViewSet
from rest_framework.response import Response
from fdfs_client.client import Fdfs_clientfrom meiduo_admin.serializers.image import ImageSeriazlier, SKUSeriazlier
from meiduo_admin.utils.pagenum import PageNum
from goods.models import SKUImage, SKU
from celery_tasks.static_file.tasks import get_detail_htmlclass ImageView(ModelViewSet):serializer_class = ImageSeriazlierqueryset = SKUImage.objects.all()pagination_class = PageNumdef simple(self, request):data = SKU.objects.all()ser = SKUSeriazlier(data, many=True)return Response(ser.data)# 重写拓展类的保存业务逻辑def create(self, request, *args, **kwargs):client = Fdfs_client(settings.FASTDFS_PATH)data = request.FILES.get('image')res = client.upload_by_buffer(data.read())if res['Status'] != 'Upload successed.':return Response(status=403)image_url = res['Remote file_id']sku_id = request.data.get('sku')[0]image = SKUImage.objects.create(sku_id=sku_id, image=image_url)return Response({'id': image.id,'sku': sku_id,'image': image.image.url},status=201)# 重写拓展类的更新业务逻辑def update(self, request, *args, **kwargs):# 创建FastDFS连接对象client = Fdfs_client(settings.FASTDFS_PATH)# 获取前端传递的image文件data = request.FILES.get('image')# 上传图片到fastDFSres = client.upload_by_buffer(data.read())# 判断是否上传成功if res['Status'] != 'Upload successed.':return Response(status=403)# 获取上传后的路径image_url = res['Remote file_id']# 获取sku_idsku_id = request.data.get('sku')[0]# 查询图片对象img=SKUImage.objects.get(id=kwargs['pk'])# 更新图片img.image=image_urlimg.save()# 生成新的详情页页面get_detail_html.delay(img.sku.id)# 返回结果return Response({'id': img.id,'sku': sku_id,'image': img.image.url},status=201  # 前端需要接受201状态码)

注意事项:这儿更新操作必须重新修改父类代码,否则修改后的图片地址在数据库中是空的

【上面的create重写父类的方法都可以封装到序列化器中,视图方法中就可以不用写了,序列化器中封装好后,视图中的代码会继承父类的代码直接完成更新操作,方法和图片保存处的代码操作是一样的,这儿不在修改了】

图片管理之更新SKU表数据相关推荐

  1. SKU表管理之更新SKU表数据

    更新SKU表数据 1. 获取修改商品的详情信息 点就修改按钮时,我们需要先获取要修改的商品详情信息 接口分析 请求方式: GET /meiduo_admin/skus/(?P<pk>\d+ ...

  2. 图片管理之删除SKU表数据

    删除SKU表数据 接口分析 请求方式: Delte /meiduo_admin/skus/images/(?P<pk>\d+)/ 请求参数: 通过请求头传递jwt token数据. 在路径 ...

  3. SPU表管理之更新SPU表数据

    更新SPU表数据 1. 获取修改商品的详情信息 点就修改按钮时,我们需要先获取要修改的商品详情信息 接口分析 请求方式: GET /meiduo_admin/goods/(?P<pk>\d ...

  4. 用户组管理之更新分组表数据

    更新分组表数据 1. 获取修改分组表的详情信息 点就修改按钮时,我们需要先获取要修改的分组表详情信息 接口分析 请求方式: GET /meiduo_admin/permission/groups/(? ...

  5. 权限表管理之更新权限表数据

    更新权限表数据 1. 获取修改权限表的详情信息 点击修改按钮时,我们需要先获取要修改的商品详情信息 接口分析 请求方式: GET /meiduo_admin/permission/perms/(?P& ...

  6. SKU表管理之删除SKU表数据

    删除SKU表数据 接口分析 请求方式: Delte meiduo_admin/skus/(?P<pk>\d+)/ 请求参数: 通过请求头传递jwt token数据. 在路径中携带删除的sp ...

  7. SKU表管理之保存SKU表数据

    保存SKU表数据 在保存数据之前我们需要先获取三级分类信息.SPU表的名称信息.当前SPU商品的规格选项信息加载到页面中 1.获取三级分类信息 接口分析 请求方式: GET /meiduo_admin ...

  8. 规格表管理之更新规格表数据

    更新规格表数据 [ModelViewSet视图集中已经封装好了增删改查的功能,所以这几个功能的代码基本上都是一样的] 1. 获取要修改规格表的详情信息 点击修改按钮时,我们需要先获取要修改的规格详情信 ...

  9. SQL Server 常用更新语句,用B表数据作为条件或数据源更新A表数据

    SQL Server 常用更新语句,用B表数据作为条件或数据源更新A表数据 示例:用B表姓名覆盖A表姓名 假设: A表数据 Id,Name 1,张三 B表数据 Id,Name 1,李四 用下面这个语句 ...

最新文章

  1. 用like语句时的C#格式化函数
  2. 计算机视觉未来走向:视频理解等5大趋势详解
  3. 代码攻击破坏设备,炸毁 27 吨发电机的背后
  4. 进程间数据传递:Queue,Pipe 进程间数据共享:Manager
  5. DOM(Document object madle) 文档对象模型: 元素节点 文本节点 属性节点
  6. Maven项目配置EL表达式原样输出解决方法
  7. bios文件查看工具_修改BIOS让老主板支持NVMe固态硬盘
  8. 关于wordpress的一些基础知识+安装流程+使用说明(还没整理完)
  9. exit java_没有System.exit,如何退出Java程序?(通过用户输入?)
  10. java ee是什么_死磕 java集合之HashSet源码分析
  11. 基础知识—循环语句-循环控制
  12. 功能安全 李艳文_李艳文:智能网联全新安全问题凸显 相关自动驾驶事故逐年增加...
  13. 国产FPGA芯片资源性能对照比较一览表
  14. webservice接口等待时间_调用webservice超时问题的解决
  15. 【深度学习】什么是解耦?
  16. NO.6网工学习之QINQ
  17. Android 6.0 PM机制系列(四) APK安装需要空间分析
  18. BWAPP靶场-HTML injection-Reflected(POST)
  19. AndroidStudio下使用cmake开发ndk
  20. es6怎么将对象转换为数组

热门文章

  1. 中关村开源创新大赛-达闼赛道如火如荼进行中
  2. 写了篇爬虫文章,收到律师函,怎么办
  3. 用 Python 动态可视化,看看比特币这几年
  4. 不到顶会现场也能听论文讲解?这个视频集合网站值得收藏
  5. 从原理到代码,轻松深入逻辑回归模型!
  6. 如何构建优质的推荐系统服务?| 技术头条
  7. FPGA技术的未来发展:谁与AI平分秋色
  8. 使用可进化的AutoML发现神经网络架构
  9. 干货 | 目标检测入门,看这篇就够了(下)
  10. 阿里云首席科学家闵万里:我们为什么敢挑战一百年的制度,因为黑科技能为挽救生命抢来50%的可能性