Django:如何计算浏览的人数

2024-04-20

我正在 Django 中制作一个简单的 BBS 应用程序,我希望每当有人看到帖子时,该帖子的浏览量 (post_view_no) 就会增加。

目前我面临两个困难:

  • 我需要限制 post_view_no 的增加,以便一个用户只能增加一次,无论用户刷新/点击帖子多少次。

  • 我还需要能够跟踪未登录的用户。

关于第一个问题,只要我创建一个名为“View”的模型并检查数据库,这似乎很容易,但我有一种感觉这可能有点矫枉过正。

就第二个问题而言,我能想到的就是使用cookies/IP地址来跟踪用户,但IP几乎不是唯一的,我不知道如何使用cookies

我相信这是论坛/bbs 解决方案的常见功能,但谷歌搜索只出现插件或“愚蠢”的解决方案,每次查看帖子时都会增加视图。

解决这个问题的最佳方法是什么?


我认为你可以通过 cookie 来完成这两件事。例如,当用户访问某个页面时,您可以

  1. 检查他们的会话中是否设置了“viewed_post_%s”(其中 %s 是帖子 ID)密钥。

  2. 如果有,则什么也不做。如果没有,则增加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(使用前将#替换为@)

Django:如何计算浏览的人数 的相关文章

随机推荐

  • Java keytool / 使用 java 生成密钥的安全性(一般)

    我们使用与 java 安装捆绑在一起的 keytool 来生成密钥以进行非对称 RSA 加密 鉴于近期events https www schneier com blog archives 2013 09 the nsa is brea h
  • 如何为 Windows Phone 7 应用程序的 UI 编写自动化测试?

    驱动一个普通的应用程序 它的 UI 已经足够困难了 但是当应用程序没有在您的开发平台上运行时 这就更难了 那么哪些工具可以帮助我测试 Windows Phone 7 应用程序的 UI 也可以看看 对于 Windows 7 Phone 代码的
  • IntelliJ IDEA:为什么 readLine() 需要两个用户输入,而不是使用 Kotlin 的一个?

    我编写了一个简单的程序 它从控制台获取用户的输入 然后将其打印出来 但是当用户输入时 它会请求第二个用户输入 并且只读取第二个输入 Code fun main args Array
  • 如何在 Mathematica 8 中并行集成

    有人知道如何使用所有核心来计算积分吗 我需要使用并行化或并行表 但如何使用 f r Sum 1 n 2 r 2 n 7 2 n n r 2 n 1 x r 2 n 1 n 0 r 2 Nw Transpose Table f j i 1 j
  • Clojure:在特定命名空间中启动 repl

    我安装了 boot clj 并且希望能够在外部编辑器中编辑 clj 文件 并单独运行一个命令行 REPL 我可以从中调用我在 clj 文件中更改的函数 不需要特殊的重新加载命令 另一件事是我不想手动键入命令来包含命名空间 我只想运行一个将我
  • 无需打开/保存即可评估 Excel 文件

    有没有一种方法可以在不手动打开文件的情况下计算Excel公式 如果 openxlsx 不是最佳选择 请随时推荐其他软件包 谢谢 我的目标是将数据粘贴到 Excel 文件 已经存在 中 其中的公式引用我要粘贴数据的范围 并让 Excel 刷新
  • 播种数据透视表的更好方法

    我有以下表格users roles和数据透视表角色 用户具有以下表结构 users id username password roles id role 角色 用户 id role id user id
  • 配置 IIS 以接收电子邮件

    根据这个答案 https stackoverflow com a 929797 939213可以配置 IIS 来接收电子邮件 这就是我想做的 但答案说它是在下面完成的IIS SMTP under domains 我使用 IIS 管理器连接到
  • 更改自定义产品类型的 WooCommerce“库存”文本(预购)

    一点背景知识 我目前正在使用WooCommerce 插件的产品预订单 https wordpress org plugins product pre orders for woo 由别墅主题 总的来说 除了这一件事之外 它对于我的目的来说效
  • Python argparse 切换标志

    argparse 有什么方法可以解析类似的标志 a b c d foo py s b 应该将 True 存储在dest of s和 False 中dest of b 很像 Windows 所做的attrib或Linuxchmod 目前 我正
  • 在 Mac osx 中将 .a 转换为 .dylib

    是否可以在 Mac osx 中将 a 文件转换为 dylib 文件 我目前有libraryname a 它似乎无法将其包含在我的程序中 因为仅包含 dylib 库 还有一个命令可以通过 mac osx 终端显示程序中使用的静态库吗 是的 这
  • 如何从字符串列表中提取数字?

    我应该如何仅从中提取数字 a 1 2 3 4 5 6 invalid 我努力了 mynewlist s for s in a if s isdigit print mynewlist and for strn in a values map
  • python 中的 Selenium Webdriver:跨测试用例重复使用相同的 Web 浏览器

    Python 新手在这里 我试图在整个测试用例中重复使用相同的浏览器 但是 我不知道如何传递全局变量来完成这项工作 现在 我有一个 main py 看起来像这样 C Python27 python exe import unittest i
  • 您的目标项目“XXX”未引用EntityFramework。这个包是必需的

    谁能指出我出错的方向 我正在尝试使用 SQLite 进行迁移以在 EFCore 上工作 控制台应用程序 NET Core 3 1 运行任何命令 例如enable migrations或update database 都会出现错误 您的目标项
  • 核心动画“翻转”动画

    我希望使用 Core Animation 在 Mac 应用程序中模拟翻转时钟动画 目前我有三个 CALayer 代表数字的上半部分和下半部分 第三个用于代表翻转动画 在以下文章中找到了解决方案 使用 Core Animation 创建 iP
  • HTML 5 音频标记多个文件

    我正在尝试在一个 HTML 5 音频标签中放置两个文件 并依次播放 到目前为止我的代码是
  • 获取设备的方向?

    我有一个相机预览活动 它被迫保持在横向模式 有没有办法可以告诉我手机当前的方向 而不是屏幕方向 基本上我想知道用户是否以纵向模式或横向模式握住手机 以便我可以正确旋转输出捕获的位图 现在它总是以横向模式输出 Thanks if getRes
  • 异常字符串插值不替换变量

    我们正在使用 Scala Play 我试图确保所有 SQL 查询都使用 Anorm 的字符串插值 它适用于某些查询 但许多查询实际上并未在执行查询之前替换变量 import anorm SQL import anorm SqlStringI
  • 获取maven插件在自己的Mojo中的目录路径

    我正在创建一个自定义 Maven 插件 在其中一篇 Mojos 中 我正在读一本Xpp3Dom使用以下代码段从 XML 文件中获取对象 File pluginsFile new File absolute path to file plug
  • Django:如何计算浏览的人数

    我正在 Django 中制作一个简单的 BBS 应用程序 我希望每当有人看到帖子时 该帖子的浏览量 post view no 就会增加 目前我面临两个困难 我需要限制 post view no 的增加 以便一个用户只能增加一次 无论用户刷新