阿语python美多商城-商品-商品详情页之第6.6.3节统计分类商品访问量

news/2024/7/7 21:48:36 标签: 数据库, web, 逻辑回归, nginx, django

统计分类商品访问量

提示:

  • 统计分类商品访问量 是统计一天内该类别的商品被访问的次数。

  • 需要统计的数据,包括商品分类,访问次数,访问时间。

  • 一天内,一种类别,统计一条记录。

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/(?P<category_id>\d+)/

2.请求参数:路径参数

参数名类型是否必传说明
category_idstring商品分类ID,第三级分类

3.响应结果:JSON

字段说明
code状态码
errmsg错误信息

4.后端接口定义和实现,

  • 如果访问记录存在,说明今天不是第一次访问,不新建记录,访问量直接累加。

  • 如果访问记录不存在,说明今天是第一次访问,新建记录并保存访问量。

class DetailVisitView(View):
    """详情页分类商品访问量"""

    def post(self, request, category_id):
        """记录分类商品访问量"""
        try:
            category = models.GoodsCategory.objects.get(id=category_id)
        except models.GoodsCategory.DoesNotExist:
            return http.HttpResponseForbidden('缺少必传参数')

        # 获取今天的日期
        t = timezone.localtime()
        today_str = '%d-%02d-%02d' % (t.year, t.month, t.day)
        today_date = datetime.datetime.strptime(today_str, '%Y-%m-%d')
        try:
            # 查询今天该类别的商品的访问量
            counts_data = category.goodsvisitcount_set.get(date=today_date)
        except models.GoodsVisitCount.DoesNotExist:
            # 如果该类别的商品在今天没有过访问记录,就新建一个访问记录
            counts_data = models.GoodsVisitCount()

        try:
            counts_data.category = category
            counts_data.count += 1
            counts_data.save()
        except Exception as e:
            logger.error(e)
            return http.HttpResponseServerError('服务器异常')

        return http.JsonResponse({'code': RETCODE.OK, 'errmsg': 'OK'})

http://www.niftyadmin.cn/n/739737.html

相关文章

阿语python4-2 美多商城v5.0商品-商品搜索之第6.5.1节全文检索方案Elasticsearch

全文检索方案Elasticsearch1. 全文检索和搜索引擎原理商品搜索需求当用户在搜索框输入商品关键字后&#xff0c;我们要为用户提供相关的商品搜索结果。商品搜索实现可以选择使用模糊查询like关键字实现。但是 like 关键字的效率极低。查询需要在多个字段中进行&#xff0c;使用…

阿语python4-2 美多商城v5.0商品-商品列表页之第6.4.4节列表页分页和排序

列表页热销排行根据路径参数category_id查询出该类型商品销量前二的商品。使用Ajax实现局部刷新的效果。1. 查询列表页热销排行数据1.请求方式选项方案请求方法GET请求地址/hot/(?P<category_id>\d)/2.请求参数&#xff1a;路径参数参数名类型是否必传说明category_idst…

阿语python美多商城-商品-商品搜索之第6.5.3节渲染商品搜索结果

1. 准备商品搜索结果页面2. 渲染商品搜索结果Haystack返回的数据包括&#xff1a;query&#xff1a;搜索关键字paginator&#xff1a;分页paginator对象page&#xff1a;当前页的page对象&#xff08;遍历page中的对象&#xff0c;可以得到result对象&#xff09;result.object…

阿语python美多商城-商品-商品详情页之第6.7.1节设计浏览记录存储方案

设计浏览记录存储方案当登录用户在浏览商品的详情页时&#xff0c;我们就可以把详情页这件商品信息存储起来&#xff0c;作为该登录用户的浏览记录。用户未登录&#xff0c;我们不记录其商品浏览记录。1. 存储数据说明虽然浏览记录界面上要展示商品的一些SKU信息&#xff0c;但…

阿语python美多商城-商品-商品详情页之第6.6.1节商品详情页分析和准备

商品详情页分析和准备1. 商品详情页组成结构分析1.商品频道分类已经提前封装在contents.utils.py文件中&#xff0c;直接调用方法即可。2.面包屑导航已经提前封装在goods.utils.py文件中&#xff0c;直接调用方法即可。3.热销排行该接口已经在商品列表页中实现完毕&#xff0c;…

阿语python美多商城-商品-商品搜索之第6.5.2节Haystack扩展建立索引

Haystack扩展建立索引提示&#xff1a;Elasticsearch 的底层是开源库 Lucene。但是没法直接使用 Lucene&#xff0c;必须自己写代码去调用它的接口。思考&#xff1a;我们如何对接 Elasticsearch服务端&#xff1f;解决方案&#xff1a;Haystack1. Haystack介绍和安装配置1.Hay…

阿语python美多商城-商品-购物车管理之第7.2.6节合并购物车

合并购物车需求&#xff1a;用户登录时&#xff0c;将cookie购物车数据合并到Redis购物车数据中。提示&#xff1a;QQ登录和账号登录时都要进行购物车合并操作。1. 合并购物车逻辑分析1.合并方向&#xff1a;cookie购物车数据合并到Redis购物车数据中。 2.合并数据&#xff1a;…

阿语python美多商城-商品-购物车管理之第7.2.4节删除购物车

删除购物车提示&#xff1a;在购物车页面删除购物车使用局部刷新的效果。1. 删除购物车接口设计和定义1.请求方式选项方案请求方法DELETE请求地址/carts/2.请求参数&#xff1a;JSON参数名类型是否必传说明sku_idint是商品SKU编号3.响应结果&#xff1a;JSON字段说明code状态码…