2012-10-07 61 views
1

我有一個網站,我允許人們下載文件,比如他們可以重複使用的Powerpoint模板。在Django中跟蹤下載的數量

我在模型中添加了一列,用於存儲這些文件的名稱爲「Downloads」的信息和位置,在該列中,我希望將它用作計數器來跟蹤文件下載的次數。

我該怎麼辦?它是否是頁面上的GET請求?基本上我只是提供一個鏈接到文件,並自動下載,所以不知道如何傳遞鏈接被點擊返回到模型的事實。

非常感謝:-)

回答

2

如果您創建處理GET請求,你可以把更新代碼,在視圖中的視圖。如果你的Django-app沒有處理自己的上傳,你可以在更新數據庫中的計數器之後創建一個簡單的重定向到下載鏈接的視圖。

2

您有幾種方法可以做到這一點:

  • 創建自定義視圖,即「代理」的所有文件,同時跟蹤下載
  • 創建一箇中間件,做幾乎與上面相同的,過濾哪些請求要記錄
  • ..但是,如果您想統計下載收集的靜態文件,那麼以上都不適用,這些靜態文件將由您的http服務器直接提供,而無需通過django。在這種情況下,我會從Web服務器日誌中檢索下載計數;看看您的網絡服務器是否允許將日誌存儲到數據庫,否則我會創建一個運行cron的腳本來分析日誌文件並將計數存儲到數據庫中,可以從您的django應用程序訪問該數據庫。
1

就像redShadow說的那樣,你可以創建一個代理視圖。此視圖可以通過mod_xsendfile(如果您使用apache作爲網絡服務器)併爲下載設置計數器來提供文件。