首页 > 解决方案 > django 详细视图的页面查看次数

问题描述

我想获取详情页的浏览量,我做到了,但是我有一个问题,每次刷新页面,浏览量都会增加。我希望每个用户的视图只增加一次,而不是每次页面刷新时增加访问次数。

model:
class Product(models.Model):
    name = models.CharField(max_length=300)
    create = models.DateTimeField(auto_now_add=True)
    update = models.DateTimeField(auto_now=True)
    slug = models.SlugField(unique=True)
    information = models.TextField(blank=True, null=True)
    views = models.IntegerField(null=True, blank=True, default=0)
    
view:
def details(request, id):
     product_view = Product.objects.get(id=id)
     product_view.views = product_view.views  + 1
     product_view.save()
     return render(...) 

标签: djangodjango-modelsdjango-rest-frameworkdjango-views

解决方案


您创建了一个 ManyToMany 字段。当用户查看页面时,您将视图添加到用户的 ManyToMany 并增加视图。如果该关系已经存在(意味着他们之前访问过该页面),则您不计算视图,因此创建一个唯一视图。

注意:我很肯定那里有更好的解决方案,但这是一个开始!


推荐阅读