django - 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(...)
解决方案
您创建了一个 ManyToMany 字段。当用户查看页面时,您将视图添加到用户的 ManyToMany 并增加视图。如果该关系已经存在(意味着他们之前访问过该页面),则您不计算视图,因此创建一个唯一视图。
注意:我很肯定那里有更好的解决方案,但这是一个开始!
推荐阅读
- jquery - 如果列表中没有项目(通知),则切换 div
- javascript - 如何使用来自 for 循环的信息来编写电子邮件
- php - 打开页面时删除url中的某些部分
- javascript - 当用户单击/移出文本框时删除错误验证消息
- ios - 它们是否相当于原生 iOS 模拟器开发的反应原生“热重载”?
- html - 寻找正确的 Laravel 路线 | 从数据库中获取照片
- c - 我的快速排序实现不起作用
- google-colaboratory - Google Colab 中的运行时和会话有什么区别?
- r - 在数据框的不同行之间的管道内计算
- python - 如何限制 Jupyter Notebook 允许使用的 RAM 量?