我正在用Django构建一个项目,并且目前正在尝试实现Django -notification作为跟踪用户活动的一种手段。虽然我设法安装它并创建了一些通知,但它们只通过电子邮件发送,而不是存储在相应的数据库中,因此我可以在提要视图中显示它们。
/notifications/feed/当前给我一个类型错误,我不确定这是否相关?
TypeError at/notifications/feed/init()接受3个参数(1给定)
如有任何建议,将不胜感激。我看过Pinax是如何使用通知的,但不明白他们是如何超越电子邮件的后端。
在settings.py中,我启用了'notification',以及template_context_processor 'notification.context_processors.notification'。
urls . py
url(r'^note/', include('notification.urls')),
app/management.py
if "notification" in settings.INSTALLED_APPS:
from notification import models as notification
def create_notice_types(app, created_models, verbosity, **kwargs):
notification.create_notice_type("messages_received", _("Message Received"), _("you have received a message"), default=2)
signals.post_syncdb.connect(create_notice_types, sender=notification)
app/view.py
...
if notification:
notification.send([user], "messages_received", {'message': message,})
...
通知。send被执行,我检查了一下,但似乎没有任何东西存储在"通知"数据库中..
我应该补充一下,我正在运行django-notification (https://github.com/brosner/django-notification)的Brian Rosner分支。
看起来浏览器的django-notifications分支与jtauber的不同之处是,send_now()
实际上并没有向数据库添加通知实例,默认的EmailBackend
通知后端也没有。
你将不得不写你自己的通知后端类,创建一个通知实例时,deliver()
被调用,并将其添加到NOTIIFICATION_BACKENDS
。
复制jtauber行为的(未测试的)示例:
class MyBackend(BaseBackend):
def deliver(self, recepient, sender, notice_type, extra_context):
messages = self.get_formatted_messages(["notice.html"],
notice_type.label, extra_context)
notice = Notice.objects.create(recipient=recepient,
message=messages['notice.html'], notice_type=notice_type,
on_site=on_site, sender=sender)
notice.save()