2010-08-10 56 views
7

Hãy tha thứ cho tôi nếu câu hỏi này có ý nghĩa ít; Tôi đã ngủ rất muộn.Gửi tin nhắn đến người dùng qua tín hiệu django

Tôi muốn gửi thông báo cho người dùng bất cứ khi nào tín hiệu kích hoạt qua mô-đun tin nhắn của django, nhưng tôi thua lỗ về cách chuyển đối tượng yêu cầu đến phương thức messages.success.

Tôi đang làm điều này bởi vì bất cứ khi nào người dùng nhận được huy hiệu, tôi cần phải nói với anh ấy về điều đó. Ví dụ: khi người dùng hoàn thành tiểu sử của mình, hãy thực hiện một số xếp hạng hoặc đặt một số lượng nhận xét nhất định mà huy hiệu được tặng thưởng. Hiện tại, cách duy nhất để người dùng nói rằng cô ấy có huy hiệu mới là truy cập trang huy hiệu nhưng tôi muốn thông báo cho người dùng về sự kiện một cách nhẹ nhàng.

Sử dụng thông báo django sẽ hoạt động, nhưng hệ thống chúng tôi đã thực hiện sẽ quá chói tai (hiện tại nó tải một phương thức) và đắt hơn vì nó truy cập cơ sở dữ liệu.

Xin cảm ơn trước.

+1

Có thể bạn không muốn làm điều này. Hãy giải thích lý do tại sao bạn đang thử một cái gì đó như thế này. Chỉ hiển thị thông báo trong mẫu của bạn là giải pháp thông thường. Bạn đang cố làm gì vậy? –

+0

"bất cứ khi nào người dùng nhận được huy hiệu"? Gì? –

Trả lời

7

Khung thư thông báo Django hoạt động dựa trên các yêu cầu HTTP chứ không phải người dùng (vì vậy nó cũng hoạt động đối với người dùng ẩn danh). Một tín hiệu sẽ không có ý tưởng về yêu cầu để đính kèm một tin nhắn đến, và rất có thể là người dùng trong câu hỏi có lẽ thậm chí sẽ không được đăng nhập vào thời điểm đó.

Nghe có vẻ như những gì bạn đang cố gắng làm sẽ phù hợp hơn với nội dung như thông báo django, http://github.com/jtauber/django-notification/.

+0

Cảm ơn, đây chính xác là những gì tôi đang tìm kiếm. – IntrepidDude

+0

Ugh ... khi xem xét lại tuyến đường thông báo django dường như ít lôi cuốn hơn. Giảm thiểu các truy vấn tới db là ưu tiên. – IntrepidDude

+0

Haha, tôi chỉ mất bốn năm để nhận ra rằng điều này đáp ứng tất cả các yêu cầu được chỉ định trong câu hỏi của tôi. – IntrepidDude

2

Bạn không thể sử dụng khung thư trực tiếp trong tín hiệu vì bạn không có quyền truy cập vào yêu cầu.

Bạn có thể nhận được thông tin này bằng cách bao gồm chế độ xem mà người dùng có thể thường xuyên truy cập bằng nội dung nào đó kiểm tra huy hiệu mới và tạo thông báo. Sau đó, mặc dù họ sẽ không nhận được thông báo trên trang tiếp theo được xem sau khi nhận được huy hiệu, họ sẽ nhận được nó trên trang đầu tiên được xem sau trang tạo thông báo.

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