图片管理之更新SKU表数据
更新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表数据相关推荐
- SKU表管理之更新SKU表数据
更新SKU表数据 1. 获取修改商品的详情信息 点就修改按钮时,我们需要先获取要修改的商品详情信息 接口分析 请求方式: GET /meiduo_admin/skus/(?P<pk>\d+ ...
- 图片管理之删除SKU表数据
删除SKU表数据 接口分析 请求方式: Delte /meiduo_admin/skus/images/(?P<pk>\d+)/ 请求参数: 通过请求头传递jwt token数据. 在路径 ...
- SPU表管理之更新SPU表数据
更新SPU表数据 1. 获取修改商品的详情信息 点就修改按钮时,我们需要先获取要修改的商品详情信息 接口分析 请求方式: GET /meiduo_admin/goods/(?P<pk>\d ...
- 用户组管理之更新分组表数据
更新分组表数据 1. 获取修改分组表的详情信息 点就修改按钮时,我们需要先获取要修改的分组表详情信息 接口分析 请求方式: GET /meiduo_admin/permission/groups/(? ...
- 权限表管理之更新权限表数据
更新权限表数据 1. 获取修改权限表的详情信息 点击修改按钮时,我们需要先获取要修改的商品详情信息 接口分析 请求方式: GET /meiduo_admin/permission/perms/(?P& ...
- SKU表管理之删除SKU表数据
删除SKU表数据 接口分析 请求方式: Delte meiduo_admin/skus/(?P<pk>\d+)/ 请求参数: 通过请求头传递jwt token数据. 在路径中携带删除的sp ...
- SKU表管理之保存SKU表数据
保存SKU表数据 在保存数据之前我们需要先获取三级分类信息.SPU表的名称信息.当前SPU商品的规格选项信息加载到页面中 1.获取三级分类信息 接口分析 请求方式: GET /meiduo_admin ...
- 规格表管理之更新规格表数据
更新规格表数据 [ModelViewSet视图集中已经封装好了增删改查的功能,所以这几个功能的代码基本上都是一样的] 1. 获取要修改规格表的详情信息 点击修改按钮时,我们需要先获取要修改的规格详情信 ...
- SQL Server 常用更新语句,用B表数据作为条件或数据源更新A表数据
SQL Server 常用更新语句,用B表数据作为条件或数据源更新A表数据 示例:用B表姓名覆盖A表姓名 假设: A表数据 Id,Name 1,张三 B表数据 Id,Name 1,李四 用下面这个语句 ...
最新文章
- 用like语句时的C#格式化函数
- 计算机视觉未来走向:视频理解等5大趋势详解
- 代码攻击破坏设备,炸毁 27 吨发电机的背后
- 进程间数据传递:Queue,Pipe 进程间数据共享:Manager
- DOM(Document object madle) 文档对象模型: 元素节点 文本节点 属性节点
- Maven项目配置EL表达式原样输出解决方法
- bios文件查看工具_修改BIOS让老主板支持NVMe固态硬盘
- 关于wordpress的一些基础知识+安装流程+使用说明(还没整理完)
- exit java_没有System.exit,如何退出Java程序?(通过用户输入?)
- java ee是什么_死磕 java集合之HashSet源码分析
- 基础知识—循环语句-循环控制
- 功能安全 李艳文_李艳文:智能网联全新安全问题凸显 相关自动驾驶事故逐年增加...
- 国产FPGA芯片资源性能对照比较一览表
- webservice接口等待时间_调用webservice超时问题的解决
- 【深度学习】什么是解耦?
- NO.6网工学习之QINQ
- Android 6.0 PM机制系列(四) APK安装需要空间分析
- BWAPP靶场-HTML injection-Reflected(POST)
- AndroidStudio下使用cmake开发ndk
- es6怎么将对象转换为数组