商品详情-----轮播图,一类商品,热门商品

1.轮播图试图
class GetCarousel(APIView):
    def get(self,requst):
        # 查询结果集
        car_data = Carousel.objects.all()
        # 序列化  ORM->JSON数据
        ser = carser(car_data,many=True)
        return Response({
            'code':200,
            'msg':'加载成功',
            'carousel':ser.data
        })
2.序列化器

创建四个序列化器返回后端数据

from rest_framework import serializers
from .models import Goods,Category,GoodImg,Carousel
class catser(serializers.ModelSerializer):
    class Meta:
        model = Category
        fields = '__all__'

class goodser(serializers.ModelSerializer):
    class Meta:
        model = Goods
        fields = '__all__'

class goodimgser(serializers.ModelSerializer):
    class Meta:
        model = GoodImg
        fields = '__all__'

class carser(serializers.ModelSerializer):
    class Meta:
        model = Carousel
        fields = '__all__'
3.添加数据

1.需要自己创建模型类,模型类里面的图片,存放的是图片的路径
2.还有数据的脚本,需要右击运行,也可以在小黑框里添加

#必须先有类别表及数据
import os
import pymysql
# 在小黑框里面添加数据
# insert into category (id,cate_name) values
# (1,"手机"),
# (2,"电视机"),
# (3,"空调"),
# (4,"洗衣机"),
# (5,"保护套"),
# (6,"保护膜"),
# (7,"充电器"),
# (8,"充电宝");

cate_data = [
    (1,"手机"),
    (2,"电视机"),
    (3,"空调"),
    (4,"洗衣机"),
    (5,"保护套"),
    (6,"保护膜"),
    (7,"充电器"),
    (8,"充电宝")
]
# 连接数据库
conn = pymysql.connect(host="localhost", port=3306, user='root', password='123', database='p5django')
# 获取光标
cursor = conn.cursor()

# cursor.execute("delete from goods;")
cursor.executemany("insert into category (`id`,`cate_name`) values(%s,%s)", cate_data)

conn.commit()
cursor.close()
conn.close()
4.创建模型类

四个模型类

from django.db import models

# Create your models here.
class Category(models.Model):
    cate_name = models.CharField(max_length=50,verbose_name='类别名')
    class Meta:
        verbose_name_plural = '商品类别'
        db_table = 'category'
    def __str__(self):
        return self.cate_name

# 商品信息表Goods:商品名sku_name  价格price 售价selling_price
# 默认图片img  商品标题title
# 描述instruction 销量 count 库存stock  cate类别**外键**  \
#                                 是否在销售online
class Goods(models.Model):
    sku_name = models.CharField(max_length=100,verbose_name='商品名')
    price= models.DecimalField(max_digits=9,decimal_places=2,verbose_name='价格')
    selling_price = models.DecimalField(max_digits=9,decimal_places=2,verbose_name='售价')
    img = models.CharField(max_length=200,verbose_name='商品默认图片')
    title = models.CharField(max_length=300,verbose_name='商品标题',null=True)
    instruction = models.CharField(max_length=300,verbose_name='商品描述')
    count = models.IntegerField(verbose_name='销量', default=0)
    stock = models.IntegerField(verbose_name='库存',default=0)
    cate = models.ForeignKey(to=Category,on_delete=models.CASCADE,verbose_name='商品类别')
    online = models.BooleanField('是否在售',default=True)
    class Meta:
        db_table = 'goods'
        verbose_name_plural = '商品信息'
    def __str__(self):
        return self.sku_name

# 商品图片表GoodImg: 图片img  图片描述title good外键所属商品
class GoodImg(models.Model):
    img = models.CharField(max_length=200,verbose_name='图片')
    title = models.CharField(max_length=200,verbose_name='图片描述',null=True)
    good = models.ForeignKey(to=Goods,on_delete=models.CASCADE,verbose_name='所属商品')
    class Meta:
        db_table = 'goodimg'
        verbose_name_plural = '商品图片表'
    def __str__(self):
        return self.title

# 轮播图Carousel: imgPath图片路径  describes图片描述
class Carousel(models.Model):
    imgPath = models.CharField(max_length=200,verbose_name='轮播图路径')
    describes = models.CharField(max_length=200,verbose_name='图片描述',null=True)
    class Meta:
        db_table = 'carousel_t'
        verbose_name_plural = '轮播图'
    def __str__(self):
        return self.describes

5.获取一类商品信息
# 获取一类商品信息
class OnceCat(APIView):
    def get(self,request):
        # 获取种类信息
        cate_name = request.query_params.get('categoryName')
        # ORM操作获取种类信息
        try:
        	# 获取商品种类相同的数据
            cate_data = Category.objects.get(cate_name=cate_name)
        except Exception as e:
            print(e)
            return Response({'msg':'此类不存在','code':204})
        # 根据类别  获取全部商品good_set 是主表所对应的子表生成的,获取全部的数据
        goods_data = cate_data.goods_set.all()
        # 序列化
        ser = goodser(goods_data,many=True)
        return Response({
            'msg':'成功获取',
            'code':200,
            # 返回的是序列化的数据
            'result':ser.data
        })
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值