Django项目-商品列表页

商品列表页
在这里插入图片描述

商品列表面分析:
从页面观察需要做的功能有:
1,页面中有商品分类,之前已做过,可封装调用
2. 面包屑 也称导航条
3. 热销排行- 由于是时时变化, 一般会存到redis中再进行查询
4. 排序(默认、价格、人气)
5. 根据分类查询展示具体的商品–如三级分类查询出手机
6. 分页

商品列表页组成结构分析
1.商品频道分类
• 已经提前封装在contents.utils.py文件中,直接调用即可。
2.面包屑导航
• 可以使用三级分类ID,查询出该类型商品的三级分类数据。
3.排序和分页
• 无论如何排序和分页,商品的分类不能变。
• 排序时需要知道当前排序方式。
• 分页时需要知道当前分页的页码,且每页五条商品记录。
4.热销排行
• 热销排行中的商品分类要和排序、分页的商品分类一致。
• 热销排行是查询出指定分类商品销量前二的商品。
• 热销排行使用Ajax实现局部刷新的效果。

商品列表页接口设计和定义

1.请求方式:
    选项          方案
请求方法      GET
请求地址      /list/(?P<category_id>\d+)/(?P<page_num>\d+)/?sort=排序方式

# 按照商品创建时间排序
http://www.meiduo.site:8000/list/115/1/?sort=default
# 按照商品价格由低到高排序
http://www.meiduo.site:8000/list/115/1/?sort=price
# 按照商品销量由高到低排序
http://www.meiduo.site:8000/list/115/1/?sort=hot
# 用户随意传排序
http://www.meiduo.site:8000/list/115/1/?sort=ellen

2.请求参数:路径参数 和 查询参数
参数名             类型            是否必传                   说明
category_id      string            是                   商品分类ID,第三级分类
page_num       string             是                    当前页码
sort                   string            否                    排序方式

3.响应结果:HTML
list.html

4.接口定义
class GoodsListView(View):
    """商品列表页"""
    def get(self, request, category_id, page_num):
        """提供商品列表页"""
        return render(request, 'list.html')

将goods/view.py 中面包屑(导航条)封装到utils.py中调用
调用contens/utils.py 中get_categories()商品列表页到goods/view.py

# 查询商品分类
        categories = get_categories()
 # 查询面包屑
        breadcrumb = get_breadcrumb(category)

goods/utils.py

# @Time:2021/3/24 14:52
# @Author:Ellen
# @File:utils.py
from .models import GoodsCategory

def get_breadcrumb(category):
    # 查询面包屑
    # category_id
    # 要考虑传了二级或一级情况
    # 一级:返回一级 breadcrumb {'cat1':'' }
    # 二级:返回二级 breadcrumb {'cat1':'', 'cat2':'',}
    # 三级:返回三级 breadcrumb {'cat1':'', 'cat2':'','cat3': ''}
    breadcrumb = {
   
        'cat1': '',
        'cat2': '',
        'cat3': '',
    }

    if category.parent == None:
        # 一级
        breadcrumb['cat1'] = category
    elif GoodsCategory.objects.filter(parent_id=category.id).count() == 0:
        #
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值