2009-10-11 31 views
6

Có cách nào để theo dõi người dùng hoạt động trong django không?django theo dõi người dùng trực tuyến gần đây

Tôi đã thấy một vài giải pháp trực tuyến cho vấn đề:

http://mpcabd.igeex.biz/get-online-users-in-django/

là một trong những. Nhưng có vẻ hơi lạ khi sửa đổi cấu trúc mô hình chỉ để giải quyết vấn đề đơn giản này. Tôi muốn biết nếu có bất kỳ giải pháp nhanh chóng xung quanh.

Trường LAST_LOGIN trong django auth cũng không phải sử dụng nhiều vì nó chỉ ghi lại thời gian khi người dùng đăng nhập và lĩnh vực này không được cập nhật nếu người dùng đã được trong phiên cho một thời gian dài

Trả lời

4

Tôi là một người đã viết rằng blog :)

tôi không sửa đổi các mô hình tài khoản, tôi mở rộng nó, nó cũng giống như cấu hình, nhưng tôi muốn làm cho nó trong một cách mà nếu bạn đã xác định một hồ sơ, bạn vẫn có thể sử dụng phương pháp của tôi.

Tôi nghĩ rằng việc mở rộng Mô hình người dùng là cách tốt nhất để xử lý nó, tôi không biết liệu có bất kỳ điểm nào chống lại nó hay không.

+0

Tôi đã sử dụng một mô hình mở rộng. Điều tôi muốn nói là tôi cần phải trực tiếp có được trạng thái người dùng đang hoạt động mà không cần thêm "last_activity_ip" và "last_activity_date" vào mô hình.Nhưng giải pháp của bạn dường như là cách tốt nhất để đi trong một tình huống như vậy. – saurabh

2

Sửa đổi auth Mô hình người dùng có lẽ không phải là một cách tiếp cận rất "linh hoạt". Cách đơn giản nhất để đi về nó có lẽ sẽ là cung cấp hồ sơ - Django có hỗ trợ dựng sẵn để cung cấp mô hình hồ sơ người dùng để lưu trữ dữ liệu liên quan đến người dùng mà không cần sửa đổi bất kỳ mô hình nội trang nào.

Xem Django manual

Bạn chỉ đơn giản là sẽ lưu trữ thời gian hoạt động cuối cùng trong profile của người dùng.

4

Tôi đồng ý rằng cách tốt nhất để làm điều này là sử dụng hồ sơ. Điều này sẽ có một khóa nước ngoài cho bảng người dùng thay vì sửa đổi bảng hiện có.

Về mặt cách ghi lại hành động của người dùng, một mẫu có thể là viết một trình trang trí bao bọc tất cả các chế độ xem bạn muốn ghi lại. Người trang trí sẽ chỉ ghi lại thời gian và hành động chống lại hồ sơ của người dùng có liên quan.

0

Hãy thử giải pháp này:

  1. Tạo một mô hình như 'hồ sơ' sử dụng user.id như một ngoại chính
  2. Tạo một cái nhìn hồ sơ, khi người dùng đăng nhập, thay đổi trạng thái từ ẩn để trực tuyến

    • Bạn cũng có thể sử dụng xem, để kiểm tra người sử dụng cuối cùng đăng nhập 'X' phút
  3. Xử lý khi cửa sổ được đóng lại với jquery, hoặc khi được đăng xuất khỏi từ 'xem tiểu sử' để thay đổi trạng thái từ để diễn đàn trực tuyến

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