界面展示:
1 获取所有对象, 上传、修改图片
-
配置路由
-
# 13.brand 管理 router = DefaultRouter() router.register(r'goods/brands', brand_views.BrandViewSet, base_name="brands") urlpatterns += router.urls
-
-
添加视图
-
from rest_framework.response import Response from rest_framework.viewsets import ModelViewSet from meiduo_admin.good import brand_serializers from meiduo_admin.my_paginate import MyPageNumberPagination from goods.models import Brand, SKUImage from fdfs_client.client import Fdfs_client from django.conf import settings # 1,获取所有品牌 class BrandViewSet(ModelViewSet): pagination_class = MyPageNumberPagination serializer_class = brand_serializers.BrandSerializer queryset = Brand.objects.all() # 1,重写create方法,上传图片 def create(self, request, *args, **kwargs): # 1.获取参数 image = request.FILES.get("logo") # 获取前端传来的图片 name = request.data.get("name") first_letter = request.data.get("first_letter") # 2.校验参数 if not all([image, name, first_letter]): return Response(status=400) # 3.数据入库(fdfs,数据) # 3.1创建fdfs连接对象 client = Fdfs_client(settings.BASE_CONFIG) # 3.2上传图片到fdfs result = client.upload_by_buffer(image.read()) # 3.3判断是否上传成功 if result.get("Status") != "Upload successed.": return Response(status=400) # 3.4获取上传后的路径 image_url = result.get("Remote file_id") # 3.5保存图片 Brand.objects.create(logo=image_url, name=name, first_letter=first_letter) # 4.返回响应 return Response(status=201) # 2,重写update方法,修改图片 def update(self, request, *args, **kwargs): # 1.获取参数 image = request.FILES.get("logo") name = request.data.get("name") first_letter = request.data.get("first_letter") brand = self.get_object() # 2.校验参数 if not all([image, name, first_letter]): return Response(status=400) # 3.数据入库(fdfs,数据) # 3.1创建fdfs连接对象 client = Fdfs_client(settings.BASE_CONFIG) # 3.2上传图片到fdfs result = client.upload_by_buffer(image.read()) print(result) # 3.3判断是否上传成功 if result.get("Status") != "Upload successed.": return Response(status=400) # 3.4获取上传后的路径 image_url = result.get("Remote file_id") # 3.5保存图片 Brand.objects.filter(name=brand.name).update(logo=image_url, name=name, first_letter=first_letter) # 4.返回响应 return Response(status=201)
-
-
创建序列化器
-
from rest_framework import serializers from goods.models import Brand # 1,Brand序列化器 class BrandSerializer(serializers.ModelSerializer): class Meta: model = Brand fields = '__all__'
-