Джанго-Уведомление - Альтернатива Email Backend
Я строю проект с помощью Django и в настоящее время пытаюсь внедрить django-уведомления как средство для отслеживания активности пользователей. Хотя мне удалось установить его и создать несколько уведомлений, они отправляются только по электронной почте, но не сохраняются в соответствующих базах данных, чтобы я мог отображать их в представлении канала.
/ Notifications / feed / в настоящее время выдает ошибку типа, я не уверен, что это связано?
Ошибка типа в / notifications / feed /init() принимает ровно 3 аргумента (1 дано)
Любой совет будет любезно оценен. Я смотрел на то, как Pinax использует уведомления, но не мог понять, как они вышли за рамки только для электронной почты.
В settings.py у меня включена функция уведомлений, а также template_context_processor и "tification.context_processors.notification ".
urls.py
url(r'^note/', include('notification.urls')),
Приложение / 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)
Приложение / view.py
...
if notification:
notification.send([user], "messages_received", {'message': message,})
...
Notification.send выполнен, я проверил это, но кажется, что ничего не хранится в базе данных "уведомления"..
Я должен добавить, что у меня работает ветка django-уведомления Брайана Рознера ( https://github.com/brosner/django-notification).
1 ответ
Похоже, что форк django-уведомлений Броснера отличается от форта jtauber тем, что send_now()
на самом деле не добавляет экземпляры Notice в базу данных, а также по умолчанию EmailBackend
Бэкэнд уведомлений.
Вам нужно будет написать свой собственный класс бэкэнда уведомлений, который создает экземпляр Notice, когда 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()