【问题标题】:Sending notification to specific users in Django在 Django 中向特定用户发送通知
【发布时间】:2020-06-15 03:04:14
【问题描述】:

我在处理 Django 项目(创建和安排会议)时有点卡住了。我需要你的帮助!

对于该项目,我想向会议创建者选择的用户发送通知(可能会弹出通知,因为我在注册时没有实施电子邮件)。他们第一次登录时会收到通知。我查看了 Django 的消息传递框架,但似乎他们没有我正在寻找的方法。我对 Django 也很陌生,所以我真的需要你的帮助!任何建议将不胜感激!

【问题讨论】:

    标签: python django django-models django-views message-queue


    【解决方案1】:

    您需要一个识别通知的模型。

    class Notification(models.Model):
        created = models.DateTimeField(auto_add_now=True)
        updated = models.DateTimeField(auto_now=True)
        text = models.TextField()
        user = models.ForeignKey(User, on_delete=models.CASCADE)
        read = models.DateTimeField(null=True, blank=True)
    

    您可以在应用程序中的任何位置为用户创建任意数量的通知。

    如果您需要在任何页面上显示它们,最好将它们拉入context processor。如果它只在特定页面上,我会将它们添加到该视图的模板呈现上下文中。

    至于将它们标记为已读,您可以自行决定。您可以选择在将它们呈现给用户时将它们标记为已读,这将与您在上述任何一种情况下拉取它们同时发生。或者您可以强制用户关闭它们,然后将其标记为已读。如果您这样做,您将需要一个带有通知 id 或其他标识符的 ajax 视图,验证请求用户与通知的用户匹配并设置 read=django.utils.timezone.now()

    编辑:

    重新阅读问题,这里有一个更合适的答案:

    class Notification(models.Model):
        created = models.DateTimeField(auto_add_now=True)
        text = models.TextField()
        users = models.ManyToManyField(User, through='NotificationUser')
    
    class NotificationUser(models.Model):
        created = models.DateTimeField(auto_add_now=True)
        updated = models.DateTimeField(auto_now=True)
        user = models.ForeignKey(User, on_delete=models.CASCADE)
        notification = models.ForeignKey(User, on_delete=models.CASCADE)
        read = models.DateTimeField(null=True, blank=True)
    

    通过这种方式,您可以拥有一个带有文本(或者可能是创建者)属性的通知实例。然后具有通知用户特定的属性,例如该特定用户是否已阅读/看到通知。 编辑: 我重新阅读了您的问题,它说要向多个用户发送通知。在那种情况下,这样的事情可能会更好。

    【讨论】:

    • 谢谢!那么,我是否使用 message 方法(我猜是 info one)来显示消息?
    • 没有。你需要创造一些新的东西。
    • 你有链接,我可以查看详细信息吗?对不起,我对 Django 真的很陌生! ://
    • 用户提交表单时,如何给特定用户发送弹窗通知?
    【解决方案2】:

    使用 3rd 方应用程序 django 通知。它会完成这项工作。

    【讨论】:

      猜你喜欢
      • 2018-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-19
      • 1970-01-01
      相关资源
      最近更新 更多