Python中文
首页
教程
问答
标签
搜索
登录
注册
在Django中监控博客文章浏览量的最佳方法
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我正在开发一个博客webapp,我想监控一篇文章的浏览量。我已经决定使用PostDetail视图进行计数。为了防止特定用户的计数器递增,我将只允许记录的用户计数,并且一个用户只能计数一次</p> <p>这是我的贴身模特</p> <pre><code>class Post(models.Model): title = models.CharField(max_length=150) content = models.TextField(max_length=3000, null=True, blank=True) date_posted = models.DateTimeField(default=timezone.now) author = models.ForeignKey(User, on_delete=models.CASCADE) viewers = models.TextField(default="", null=True, blank=True) numViews = models.IntegerField(default=0) def __str__(self): return self.title def get_absolute_url(self): return reverse('post-detail', kwargs={'pk': self.pk}) </code></pre> <p>我基本上是使用一个字段“viewers”来跟踪已经统计过的用户,“numviews”作为计数器</p> <p>My views.py函数</p> <pre><code>class PostDetailView(DetailView): model = Post def get(self, request, *args, **kwargs): # increment post views whenever request is made postObject = self.get_object() user = request.user if postObject.viewers == None: postObject.viewers = "" postObject.save() if user.is_authenticated and user.username not in postObject.viewers: # increment postObject.numViews += 1 postObject.save() # add username to viewers list postObject.viewers+=user.username postObject.save() return super().get(request, *args, **kwargs) </code></pre> <p>在views函数中,我检查用户名是否已经附加到viewers字符串中,否则附加用户名并递增计数器。 有没有更有效的方法?如果博客获得数千个视图,那么它将是一个非常长的用户名字符串</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>我用@Willem Van Onsem修改了我的代码,它似乎工作正常。仅对self.user->;post详细信息视图中的self.request.user。另外,可以通过((post.viewers.count}})访问html模板中的一个post对象,并在详细视图模板中作为{object.num_views}访问该对象</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何在乒乓球比赛中预测球的轨迹,对于AI球拍预测?
1 回答
如何在乒乓球游戏中阻止球
8 回答
如何在乘法和模中不乘空间?
4 回答
如何在乘法和除以2个不同的数字之间进行交换?
9 回答
如何在也是数据一部分的单个字符上拆分大字符串
9 回答
如何在乾草堆中找到針,有更好的解決方案嗎?
9 回答
如何在事件wxWidgets中传递自定义数据
6 回答
如何在事件中使用lambda i=i?
4 回答
如何在事件中心只接收最近的数据
10 回答
如何在事件发生之前保持云函数运行?
6 回答
如何在事件发生后使页面重定向到同一页面
4 回答
如何在事件回调之间保持python生成器的状态
5 回答
如何在事件处理程序(pythonsocket、sphinx)中保留docstring
9 回答
如何在事件处理程序中更改wxRichTextCtrl的光标位置?
6 回答
如何在事件处理程序中访问外部对象?
9 回答
如何在事件循环中将协程打包为正常函数?
10 回答
如何在事件循环之外运行协同程序?
9 回答
如何在事件循环结束时为并发未来的所有线程调用类方法?
4 回答
如何在事件文件中只保留一份摘要?
7 回答
如何在事件模板中添加事件
4 回答