2013-02-21 37 views
8

我期待存儲用戶的活動,但我不確定在哪裏存儲它。我不認爲數據庫是一個選項,因爲它會比。我期待知道Facebook,Dropbox等網站如何記住特定用戶的所有活動。它不能存儲在會話中,因爲這不是會話特定的,而是用戶特定的。在Django中存儲用戶活動

請幫我一下你的建議。

回答

6

通常情況下,您可以使用Django Admin Logs進行此類活動(如果需要)。

通常Django會跟蹤管理員操作,例如創建,更新或刪除現有記錄。它具有以下結構:

from django.contrib.admin.models import LogEntry 

LogEntry.objects.log_action(
          user_id = ..., 
          content_type_id = ..., 
          object_id = ..., 
          object_repr = ...., 
          change_message = ..., 
          action_flag = ... 
          ) 

我在我的系統中使用它作爲記錄器,並跟蹤每個動作。通常,Django日誌插入,更新或刪除通過管理表單完成的操作,並記錄我手寫的視圖和表單操作。此外,您還可以使用signals來捕獲用戶操作,例如登錄/註銷。

我定義了新的操作標誌。 Django使用3個標誌:插入1,更新2和刪除3。我用我的行動旗擴大了這個名單。

正如我所說的,使用它的優勢在於,您無需處理默認的Django Admin表單以及您使用這些表單執行的任何操作。

6

你可能想看django-activity-stream這是activity streams spec的實現。這存儲數據庫中的動作列表,並允許以下用戶/實體給予與Facebook類似的東西,如果這是您感興趣的內容。

然而,正如您所提到的,這可能會帶來巨大的數據對於傳統的單一數據庫方法來說可能有點多。我不確定像Twitter這樣的網站如何處理它,但除非您計劃快速擴展,否則標準數據庫方法可能會持續一段時間。