-
商品部分-商品列表页(API接口设计与实现-获取分类SKU商品数据)
功能:根据第三级分类获取分类SKU商品的数据。 API: GET /categories/(?P<category_id>\d+)/skus/ 参数: 通过url地址传递第三级分类id 响应: [ { "id": "商品id", "name": "商品名称", "price": "商品价格", "default_image_url": "默认图片", "comments": "评论量" }, ... ]
-
商品部分-商品列表页(API接口设计与实现-分页和排序)
分页和排序: GET /categories/(?P<category_id>\d+)/skus/?page=<页码>&page_size=<页容量>&ordering=<排序字段> 注意:关闭AreasViewSet的分页:pagination_class = None
-
商品部分-商品列表页(前端vue逻辑)
-
商品部分-商品详情页(静态化说明)
每个商品都生成一个静态详情页面,用户访问哪个商品,就返回对应商品的静态详情页面。 步骤: 1. 准备模板detail.html 2. 定义一个生成静态详情页的函数:使用Celery封装为任务函数 更新: 什么时候商品的详情表数据发生变化,再重新生成对应商品的静态详情页面。 商品的详情数据是谁维护的? 答:Admin管理员。
-
商品部分-商品详情页(详情页静态化处理)
-
商品部分-商品详情页(详情静态页更新)
Django Admin站点保存数据的处理流程: admin修改数据表的数据时,数据表模型Admin管理类中save_model和delete_model会被调用, save_model: 数据新增和更新时调用 delete_model: 数据删除时调用
-
商品部分-商品详情页(批量生成详情静态页脚本文件)
-
商品部分-商品搜索(需求&搜索引擎原理介绍)
需求: 根据商品的name或者商品的副标题(caption)来搜索商品的信息。 key: iphone sql: select * from tb_sku where name like '%iphone%' or caption like '%iphone%'; like语句的搜索效率很低。 搜索引擎: # 索引结构数据:相当于新华字典检索目录 { "1": {'对应的是数据库商品表中id为3的记录'}, "2": {'对应的是数据库商品表中id为5的记录'}, ... } ` Apple MacBook Pro 13.3英寸笔记本 银色\n【全新2017款】MacBook Pro,一身才华,一触,即发 了解【黑五返场特惠】 更多产品请点击【美多官方Apple旗舰店】` MacBook Pro:1 2 MacBook Pro 功能: 1)建立索引结构数据。 2)根据关键字来检索索引记录。
-
商品部分-商品搜索(es搜索引擎&环境搭建)
es搜索引擎: java实现的开源搜索引擎,是目前搜索引擎的首选。
-
商品部分-商品搜索(haystack全文检索框架&使用)
haystack全文检索框架:
帮助开发者来使用搜索引擎的功能。
1)帮助开发者使用搜索引擎建立索引结构数据。
2)帮助开发时使用搜索引擎根据关键字检索索引的记录。
3)根据索引记录去数据库中查询出对应的数据。
-
商品部分-商品搜索(haystack对接es搜索引擎-索引数据的建立)
1)定义模型对应的索引类 2)指定索引字段的内容 3)建立索引数据:python manage.py rebuild_index
-
商品部分-商品搜索(haystack对接es搜索引擎-搜索API定义)
搜索API: GET /skus/search/?text=<搜索关键字> [ { "text": "索引字段内容", "object": { "id": "商品id", "name": "商品名称", "price": "商品价格", "default_image_url": "默认图片", "comments": "评论量" } }, ... ] 功能: 根据客户端传递`搜索关键字`利用搜索引擎先检索出索引记录,然后在根据索引记录到数据库表中查询出对应的数据,再将数据序列化进行返回。
-
商品部分-商品搜索(前端vue逻辑)
-
商品部分-浏览记录(浏览记录存储方案分析)
1)何时存(when) 当登录用户访问商品详情页面时,需要记录登录用户的浏览记录。 2)存在哪(where) redis,防止用户频繁浏览商品,造成mysql数据库的频繁操作。 3)怎么存(what) # 字符串 string: <key>: <value> history_<user_id>: '1,4,3' # 哈希 hash: <key>: {'<field>': '<value>', ...} history: { <user_id>: '1,4,3', ... } # 列表 list: <key>: [<value>, ...] history_<user_id>: [2, 3, 5] # 无序集合 set: <key>: (<member>, ...) # 有序集合 zset: <key>: (<member>, ...) 权重值 history_<user_id>: () 浏览记录存储方案: list 每个用户的浏览记录采用一条数据来存 history_<user_id>: [<sku_id>, ...]
id user_id sku_id 1 2 3 2 2 4 -
商品部分-浏览记录(浏览记录保存-API接口设计与实现)
API: POST /browse_histories/ 参数: 通过请求头传递jwt token { "sku_id": "商品id" } 响应: { "sku_id": "商品id" } history_2: ['2', '3', '1', '5'] # 浏览记录保存的过程 # 1. 去重:如果用户已经浏览过该商品,那么商品的id需要先从redis列表中移除 lrem <key> <count> <value>: 有则移除,无则忽略 # 2. 左侧加入:把最新浏览的商品的id添加到列表的最左侧 lpush <key> <value> ...: 左侧加入 # 3. 截取:只保留用户最新浏览的几个商品id ltrim <key> <start> <stop>: 只保留指定区间内的元素
-
商品部分-浏览记录(浏览记录保存-前端vue逻辑)
-
商品部分-浏览记录(浏览记录获取-API接口设计与实现)
-
商品部分-浏览记录(浏览记录获取-前端vue逻辑)