gpt4 book ai didi

python - 当有人评论他们的帖子时如何使用 django-notification 通知用户

转载 作者:太空狗 更新时间:2023-10-29 18:04:03 24 4
gpt4 key购买 nike

我已经在 django 中开发了一段时间,并开发了一个简洁的网站,具有写博客、发布问题、共享内容等功能。但是仍然缺少一件事,即为用户创建通知。

我想做的是在用户的个人资料中通知用户,无论何时有人评论他们的帖子,或者如果他们正在关注特定帖子并且有更新,然后通知用户该更新。我看了很多应用程序,但我仍然很困惑如何去做。

在使用 django-notification 的情况下,我似乎有一种印象(这可能是错误的)我只能使用它通过电子邮件通知用户,即我不能在用户个人资料,就像我们在 Facebook 上一样。

首先我想知道我是否错了,然后我真的需要一些适当的教程或指导来了解如何去做。我知道如何注册通知并以适当的信号发送它,但没有关于如何在模板中显示这些通知的文档,如果可以的话。

任何指导/教程/入门文档将不胜感激。

最佳答案

是的,django-notifications 专为电子邮件通知而设计。

这是一个信号槽,您可以将其添加到您的 models.py 中并根据您自己的需要进行调整:

from django.db import models
from django.contrib.sites.models import Site
from django.db.models import signals
from notification import models as notification

def create_notice_types(app, created_models, verbosity, **kwargs):
notification.create_notice_type("new_comment", "Comment posted", "A comment has been posted")
signals.post_syncdb.connect(create_notice_types, sender=notification)

def new_comment(sender, instance, created, **kwargs):
# remove this if-block if you want notifications for comment edit too
if not created:
return None

context = {
'comment': instance,
'site': Site.objects.get_current(),
}
recipients = []

# add all users who commented the same object to recipients
for comment in instance.__class__.objects.for_model(instance.content_object):
if comment.user not in recipients and comment.user != instance.user:
recipients.append(comment.user)

# if the commented object is a user then notify him as well
if isinstance(instance.content_object, models.get_model('auth', 'User')):
# if he his the one who posts the comment then don't add him to recipients
if instance.content_object != instance.user and instance.content_object not in recipients:
recipients.append(instance.content_object)

notification.send(recipients, 'new_comment', context)

signals.post_save.connect(new_comment, sender=models.get_model('comments', 'Comment'))

现在是模板,非常简单。

模板/通知/new_comment/short.txt

{{ comment.user }} commented on {{ comment.object }}

templates/notification/new_comment/notice.html

<a href="{{ comment.user.get_absolute_url }}">{{ comment.user }}</a> commented <a href="{{ comment.content_object.get_absolute_url }}">{{ comment.content_object }}</a>

模板/通知/new_comment/full.txt

{{ comment.user }} commented on {{ comment.content_object }}

Comment:
{{ comment.comment }}

Reply on:
http://{{ site.domain }}{{ comment.content_object.get_absolute_url }}

警告:这是对我们生产代码的非常简化、未经测试的改编。

注意:Django-1.7 弃用了 post_syncdb 信号

这里有一些更多的信息:

关于python - 当有人评论他们的帖子时如何使用 django-notification 通知用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8603469/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com