我正在 Django 中制作一个简单的 BBS 应用程序,我希望每当有人看到帖子时,该帖子的浏览量 (post_view_no) 就会增加。
目前我面临两个困难:
关于第一个问题,只要我创建一个名为“View”的模型并检查数据库,这似乎很容易,但我有一种感觉这可能有点矫枉过正。
就第二个问题而言,我能想到的就是使用cookies/IP地址来跟踪用户,但IP几乎不是唯一的,我不知道如何使用cookies
我相信这是论坛/bbs 解决方案的常见功能,但谷歌搜索只出现插件或“愚蠢”的解决方案,每次查看帖子时都会增加视图。
解决这个问题的最佳方法是什么?
我认为你可以通过 cookie 来完成这两件事。例如,当用户访问某个页面时,您可以
检查他们的会话中是否设置了“viewed_post_%s”(其中 %s 是帖子 ID)密钥。
如果有,则什么也不做。如果没有,则增加view_count
对应的数字字段Post
对象减一,并在会话中设置密钥(cookie)“viewed_post_%s”(这样以后就不会计数)。
这适用于匿名用户和注册用户,但是通过清除 cookie 或设置浏览器来拒绝它们,用户可以欺骗观看次数。
现在,在 Django 中使用 cookie(会话)非常简单:要为当前用户设置一个值,您只需调用类似的东西
request.session['viewed_post_%s' % post.id] = True
在你看来,已经完成了。 (检查docs https://docs.djangoproject.com/en/1.6/topics/http/sessions/,特别是examples https://docs.djangoproject.com/en/1.6/topics/http/sessions/#examples.)
免责声明:这超出了我的想象,我个人没有这样做过,通常是在需要进行一些页面浏览/活动跟踪时(以便您了解是什么为您的网站带来了更多流量,当用户更加活跃时等) .) 那么使用专门的系统(例如 Google Analytics、StatsD)是有道理的。但对于某些特定的用例,或者作为练习,这应该可行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)