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
})