2

我正在用 Django 构建一个项目,目前正在尝试实现 django-notification 作为跟踪用户活动的一种手段。虽然我设法安装它并创建了一些通知,但它们仅通过电子邮件发送,但不存储在各自的数据库中,以便我可以在提要视图中显示它们。

/notifications/feed/ 当前给我一个类型错误,我不确定这是否相关?

/notifications/feed/ init () 处的 TypeError 恰好需要 3 个参数(给定 1 个)

任何建议将不胜感激。我查看了 Pinax 如何使用通知,但无法弄清楚它们是如何超越仅电子邮件后端的。

在 settings.py 中,我启用了“通知”,以及 template_context_processor 的“notification.context_processors.notification”。

网址.py

    url(r'^note/', include('notification.urls')),

应用程序/管理.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)

应用程序/view.py

...      
if notification:
    notification.send([user], "messages_received", {'message': message,})
...

notification.send 已执行,我检查了这个,但似乎“通知”数据库中没有存储任何内容..

我应该补充一点,我正在运行 django-notification ( https://github.com/brosner/django-notification ) 的 Brian Rosner 分支。

4

1 回答 1

1

似乎 brosner 的 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()
于 2011-09-12T16:21:59.283 回答