Django-Notification - Email后端替代品



我正在用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()

相关内容

  • 没有找到相关文章

最新更新