首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >监控Django博客文章浏览次数的最佳方法

问监控Django博客文章浏览次数的最佳方法
EN

Stack Overflow用户
提问于 2021-02-20 07:40:42
回答 1查看 625关注 0票数 2

我正在一个博客网站上工作,我想监控一个帖子的浏览量。我已经决定使用post细节视图来计数。为了防止计数器对特定用户的增量,我将只允许日志记录的用户计数,而用户只能计数一次。

这是我的贴子模型

代码语言:javascript
复制
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})

我基本上是用一个字段‘观众’来跟踪已经被统计的用户,而‘numview’作为计数器。

我的views.py函数

代码语言:javascript
复制
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)

在views函数中,我检查用户名是否已经附加到查看器字符串,否则追加它并增加计数器。有没有更有效的方法来做到这一点?在博客获得数千次浏览的情况下,它将是一个非常长的用户名字符串。

EN

回答 1

Stack Overflow用户

发布于 2021-02-20 19:13:47

我用@Willem Van Onsem修改了我的代码,它似乎运行正常。只有post详细信息视图中的self.user -> self.request.user进行了编码。此外,查看器的数量还可以通过((post.viewers.count})访问html模板中的post对象,在详细视图模板中访问{{object.num_views})。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66289175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档