完整电商项目--(六)商品模块(5):商品列表页

商品列表页在哪?

  • 当我们进行首页的时候,点击三级分类的 第三级分类,就会进入该商品的 列表页。对应所有商品。
  • 我们数据库中只有手机的数据,所以默认点击手机
    完整电商项目--(六)商品模块(5):商品列表页_第1张图片
  • 下面就是对列表页的业务进行分析与实现:

面包屑导航

完整电商项目--(六)商品模块(5):商品列表页_第2张图片
就是一级级的显示当前的位置。

  • 我们知道存储三级分类的表为自关联表,所以直接上代码
def get_breadcrumb(cat3):
    # 面包屑导航,传递三级分类的对象
    cat2 = cat3.parent
    cat1 = cat2.parent  # 通过外键,从三级分类找到对应的一级分类
    breadcrumb = {
     
        'cat1': {
     
            'url': cat1.channels.all()[0],
            # 这里其实GoodsCategory, 和 GoodsChannel 类是一对一 ,但是定义的是外键 Foreignkey,所以语法上属于一类查多类,就需要用到这些 .all()[0]
            'name': cat1.name
        },
        'cat2': cat2,
        'cat3': cat3
    }

    return breadcrumb

列表页分页和排序

  • 排序
    • 这个简单,(1)我们默认按照商品创建的时间排序
    • (2)按照商品价格由低到高排序
    • (3)按照商品销量由低到高排序
    • 实现起来只需要一个参数控制即可:
    • url/?sort=default, 通过sort参数传递的值,进行判断何种排序
  • 分页:
    • 默认一页五条数据(因为数据库中数据较少)
    • 实现,我们使用 分页器:官方文档

      按照这个,对我们查询出来的数据进行分页即可;

例子太详细了,我就不上源代码了。

热销排行

当前列表页中数所有商品数据,我们需要向 用户展示销量前几的产品,帮助他们选择;

  • 请求地址 /hot/(?P\d+)/
  • 我们只需要这个三级分类的id值
  • 有了这个id值,我们就可以找到销量前几的商品,返回其数据了。
skus = models.SKU.objects.filter(category_id=category_id, is_launched=True).order_by('-sales')[:2]

好了,到这里就结束了,我们不去上具体的代码实现了。太繁琐了,思路都在这里,不能去死记硬看代码。

over!

你可能感兴趣的:(Django电商项目完整笔记,Django,python)