跟踪Django的下载次数

时间:2012-10-07 20:20:37

标签: django

我有一个网站,我允许人们下载文件,例如可以重复使用的Powerpoint模板。

我在模型中添加了一个列,用于存储名为“下载”的这些文件的信息和位置,在该列中,我想将其用作计数器来跟踪文件的下载次数。

我该怎么做?它是页面上的GET请求吗?基本上我只是提供一个文件的链接,下载自动开始,所以不知道如何转发链接被点击回模型的事实。

非常感谢: - )

3 个答案:

答案 0 :(得分:2)

如果您创建一个处理GET请求的视图,您可以将更新代码放在该视图中。如果您的Django-app没有处理上传本身,您可以在更新数据库中的计数器后创建一个简单地重定向到下载链接的视图。

答案 1 :(得分:2)

您有几种方法可以做到这一点:

  • 创建自定义视图,“代理”所有文件,同时跟踪下载量
  • 创建一个与上面几乎完全相同的中间件,过滤哪些记录请求
  • ..但如果您想要计算收集的静态文件的下载,这些内容将直接由您的http服务器提供,而不通过django。在这种情况下,我会从网络服务器日志中检索下载次数;看看你的网络服务器是否允许将日志存储到数据库,否则我会创建一个运行cron的脚本来解析日志文件并将计数存储到数据库,可以从你的django应用程序访问。

答案 2 :(得分:1)

就像redShadow所说,你可以创建一个代理视图。此视图可以通过mod_xsendfile提供文件(如果您使用apache作为网络服务器)并为下载设置计数器。