1

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

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

我该怎么办?它会是页面上的 GET 请求吗?基本上我只是提供一个指向文件的链接,下载会自动开始,所以不确定如何将链接被点击回模型的事实传达给模型。

非常感谢 :-)

4

3 回答 3

2

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

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

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

于 2012-10-07T20:24:04.040 回答
1

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

于 2012-10-07T22:16:08.480 回答