统计分类商品访问量
提示:
- 统计分类商品访问量 是统计一天内该类别的商品被访问的次数。
- 需要统计的数据,包括商品分类,访问次数,访问时间。
- 一天内,一种类别,统计一条记录。

1. 统计分类商品访问量模型类
模型类定义在
goods.models.py中,然后完成迁移建表。
class GoodsVisitCount(BaseModel):
"""统计分类商品访问量模型类"""
category = models.ForeignKey(GoodsCategory, on_delete=models.CASCADE, verbose_name='商品分类')
count = models.IntegerField(verbose_name='访问量', default=0)
date = models.DateField(auto_now_add=True, verbose_name='统计日期')
class Meta:
db_table = 'tb_goods_visit'
verbose_name = '统计分类商品访问量'
verbose_name_plural = verbose_name
2. 统计分类商品访问量后端逻辑
1.请求方式
| 选项 | 方案 |
|---|---|
| 请求方法 | POST |
| 请求地址 | /detail/visit/<category_id>/ |
2.请求参数:路径参数
| 参数名 | 类型 | 是否必传 | 说明 |
|---|---|---|---|
| category_id | string | 是 | 商品分类id |
3.响应结果:JSON
| 字段 | 说明 |
|---|---|
| code | 状态码 |
| errmsg | 错误信息 |
4.后端接口定义和实现,
- 如果访问记录存在,说明今天不是第一次访问,不新建记录,访问量直接累加。
- 如果访问记录不存在,说明今天是第一次访问,新建记录并保存访问量。
class DetailVisitView(View):
"""详情页分类商品访问量"""
def post(self, request, category_id):
try:
# 1.获取当前商品
category = GoodsCategory.objects.get(id=category_id)
except Exception as e:
return JsonResponse({'code': 400, 'errmsg': '缺少必传参数'})
# 2.查询日期数据
from datetime import date
# 获取当天日期
today_date = date.today()
from apps.goods.models import GoodsVisitCount
try:
# 3.如果有当天商品分类的数据 就累加数量
count_data = category.goodsvisitcount_set.get(date=today_date)
except:
# 4. 没有, 就新建之后在增加
count_data = GoodsVisitCount()
try:
count_data.count += 1
count_data.category = category
count_data.save()
except Exception as e:
return JsonResponse({'code': 400, 'errmsg': '新增失败'})
return JsonResponse({'code': 0, 'errmsg': 'OK'})