2013-02-21 37 views
8

Tôi đang tìm cách lưu trữ hoạt động của người dùng, nhưng tôi không chắc chắn nơi lưu trữ hoạt động đó. Tôi không nghĩ rằng cơ sở dữ liệu là một lựa chọn vì nó sẽ rất lớn hơn. Tôi đang tìm hiểu để biết làm thế nào các trang web như facebook, dropbox nhớ tất cả các hoạt động của một người dùng cụ thể. Và nó không thể được lưu trữ trong phiên vì đây không phải là phiên cụ thể thay vì người dùng cụ thể.Lưu trữ hoạt động của người dùng ở Django

Hãy giúp tôi với đề xuất của bạn.

Trả lời

6

Thông thường bạn có thể sử dụng Django Admin Logs cho hoạt động như vậy, nếu bạn muốn.

Thông thường Django theo dõi các hành động của quản trị viên như tạo, cập nhật hoặc xóa các bản ghi hiện có. Cấu trúc này có cấu trúc sau:

from django.contrib.admin.models import LogEntry 

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

Tôi đang sử dụng nó trong hệ thống của tôi làm trình ghi nhật ký và theo dõi mọi hành động. Thông thường, các bản ghi Django chèn, cập nhật hoặc xóa các hoạt động được thực hiện trên các biểu mẫu quản trị viên và tôi đăng nhập xem bằng tay và các hành động biểu mẫu của mình. Ngoài ra, bạn có thể nắm bắt các hoạt động của người dùng như đăng nhập/đăng xuất bằng cách sử dụng signals.

Tôi đã xác định cờ tác vụ mới. Django sử dụng 3 cờ: 1 cho chèn, 2 để cập nhật và 3 để xóa. Tôi mở rộng danh sách đó bằng cờ tác vụ của mình.

Lợi thế của việc sử dụng này là, như tôi đã nói, bạn không cần xử lý các biểu mẫu Admin mặc định của Django và bất kỳ hành động nào bạn đã thực hiện bằng các biểu mẫu này.

6

Bạn có thể muốn xem django-activity-stream là triển khai thực hiện activity streams spec. Điều này lưu trữ một danh sách các hành động trong cơ sở dữ liệu và cho phép những người dùng/thực thể sau cung cấp một cái gì đó tương tự như Facebook nếu đây là những gì bạn quan tâm. dữ liệu có thể hơi nhiều đối với phương pháp cơ sở dữ liệu đơn thông thường. Tôi không chắc chắn cách các trang web như Twitter đối phó với nó nhưng trừ khi bạn có kế hoạch mở rộng quy mô rất nhanh, phương pháp tiếp cận cơ sở dữ liệu chuẩn có thể sẽ kéo dài một thời gian.

Các vấn đề liên quan