incuna thông báo là một ứng dụng Django để tích hợp hỗ trợ thông báo vào ứng dụng của bạn là một quá trình ba bước đơn giản.
- Tạo ra các loại thông báo của bạn
- Tạo mẫu thông báo của bạn
- Gửi thông báo
Tạo loại Thông báo
Bạn cần phải gọi create_notice_type (nhãn, hiển thị, mô tả) một lần để tạo ra các loại thông báo cho ứng dụng của bạn trong cơ sở dữ liệu. nhãn chỉ là shortname nội bộ mà sẽ được sử dụng cho các loại hình, màn hình là những gì người dùng sẽ nhìn thấy như là tên của các loại thông báo và mô tả là một mô tả ngắn.
Ví dụ như:
notification.create_notice_type ("friends_invite", "Lời mời nhận", "bạn đã nhận được một lời mời")
Một cách tốt nhất để làm điều này tự động tạo ra loại thông báo là trong một tập tin management.py cho ứng dụng của bạn, gắn liền với các tín hiệu syncdb. Dưới đây là một ví dụ:
từ django.conf thiết lập nhập khẩu
từ django.utils.translation nhập ugettext_noop như _
nếu "thông báo" trong settings.INSTALLED_APPS:
& Nbsp; từ các mô hình nhập khẩu thông báo như thông báo
& Nbsp; def create_notice_types (ứng dụng, created_models, rườm rà, ** kwargs):
& Nbsp; notification.create_notice_type ("friends_invite", _ ("Lời mời nhận"), _ ("Bạn đã nhận được một lời mời"))
& Nbsp; notification.create_notice_type ("friends_accept", _ ("Chấp nhận"), _ ("một lời mời bạn gửi đi đã được chấp nhận"))
& Nbsp; signals.post_syncdb.connect (create_notice_types, người gửi thông báo =)
khác:
& Nbsp; in "Bỏ qua việc tạo ra các ứng dụng NoticeTypes như thông báo không tìm thấy"
Chú ý rằng các mã được gói trong một mệnh đề có điều kiện như vậy nếu việc thông báo không được cài đặt, ứng dụng của bạn sẽ tiến hành anyway.
Lưu ý rằng các đối số hiển thị và mô tả được đánh dấu cho dịch bằng cách sử dụng ugettext_noop. Điều đó sẽ cho phép bạn sử dụng lệnh quản lý makemessages Django và khả năng sử dụng thông báo của i18n.
Mẫu Thông báo
Có bốn mẫu khác nhau có thể được viết cho các nội dung thực tế của thông báo:
- Short.txt là một phiên bản chỉ có văn rất ngắn thông báo (thích hợp cho những việc như chủ đề email)
- Full.txt là một phiên bản văn bản chỉ còn những thông báo (thích hợp cho những thứ như cơ quan email)
- Notice.html là một đoạn ngắn, phiên bản html của các thông báo, hiển thị trong danh sách thông báo của người dùng trên các trang web
- Full.html là một chặng đường dài, phiên bản html của các thông báo (hiện không được sử dụng cho bất cứ điều gì)
Mỗi một nên được đặt trong một thư mục trên con đường được gọi là mẫu thông báo /
Ví dụ, thông báo / friends_invite / notice.html có thể chứa:
{% Tải i18n%} {% mời url như invitation_page%} {% url profile_detail username = invitation.from_user.username như user_url%}
{% Blocktrans với invitation.from_user như invitation_from_user%} {{invitation_from_user}} đã yêu cầu thêm bạn như một người bạn (xem mời ) {% endblocktrans%}
và thông báo / friends_full.txt có thể chứa:
{% Tải i18n%} {% mời url như invitation_page%} {% blocktrans với invitation.from_user như invitation_from_user%} {{}} invitation_from_user đã yêu cầu thêm bạn như một người bạn. Bạn có thể chấp nhận lời mời của họ tại:
http: // {{current_site}} {{}} invitation_page
{% Endblocktrans%}
Các biến bối cảnh được cung cấp khi gửi thông báo.
Gửi thông báo
Có hai cách khác nhau của việc gửi đi các thông báo. Chúng tôi có hỗ trợ ngăn chặn và không chặn các phương pháp của việc gửi thông báo. Cách đơn giản nhất để gửi ra một thông báo, ví dụ:
notification.send ([to_user], "friends_invite", {"FROM_USER": FROM_USER})
Một điều cần lưu ý là gửi là proxy xung quanh, hoặc send_now hoặc hàng đợi. Họ tất cả đều có cùng một chữ ký:
gửi (người sử dụng, nhãn, extra_context, on_site)
Các thông số là:
- Người sử dụng là một iterable của đối tượng người dùng gửi thông báo đến.
- Label là nhãn bạn sử dụng trong bước trước đó để xác định loại thông báo.
- Extra_content là một từ điển để thêm các mục ngữ cảnh tùy chỉnh cho các mẫu được sử dụng để làm cho thông báo. Đây là tùy chọn.
- On_site là một lá cờ boolean để xác định xem một đối tượng Thông báo được tạo ra trong cơ sở dữ liệu.
send_now so với hàng đợi so với gửi
Cho phép đầu tiên phá vỡ những gì từng làm.
gửi ngay bây giờ
Đây là một cuộc gọi chặn rằng sẽ kiểm tra từng người dùng cho elgibility được thông báo và thực sự peform send.
sắp hàng
Đây là một cuộc gọi không ngăn chặn mà sẽ xếp hàng cuộc gọi đến send_now được thực hiện tại một thời gian sau đó. Để sau đó thực hiện các cuộc gọi mà bạn cần phải sử dụng các lệnh quản lý emit_notices.
gởi
Một proxy quanh send_now và hàng đợi. Nó được hành vi của nó từ một khung cảnh toàn cầu có tên NOTIFICATION_QUEUE_ALL. Theo mặc định nó là False. Thiết lập này là có nghĩa là để giúp kiểm soát cho dù bạn muốn xếp hàng bất kỳ cuộc gọi để gửi.
gửi cũng chấp nhận bây giờ và xếp hàng đối số từ khóa. Theo mặc định mỗi tùy chọn được thiết lập để sai để tôn vinh các thiết lập toàn cầu mà là False. Điều này cho phép bạn ghi đè trên mỗi cuộc gọi cơ sở cho dù đó nên gọi send_now hoặc hàng đợi.
Hỗ trợ thông báo tùy chọn
Trong trường hợp bạn muốn sử dụng trong ứng dụng sử dụng lại thông báo của bạn, bạn có thể bọc nhập khẩu thông báo trong một mệnh đề có điều kiện mà kiểm tra nếu nó được cài đặt trước khi gửi thông báo. Kết quả là ứng dụng hoặc dự án của bạn vẫn còn có chức năng mà không cần thông báo.
Ví dụ như:
từ django.conf thiết lập nhập khẩu
nếu "thông báo" trong settings.INSTALLED_APPS:
& Nbsp; từ các mô hình nhập khẩu thông báo như thông báo
khác:
& Nbsp; thông báo = None
và sau đó, sau này:
nếu việc thông báo:
& Nbsp; notification.send ([to_user], "friends_invite", {"FROM_USER": FROM_USER})
Yêu cầu :
- Python
- Django
Bình luận không