python - 在 Django 中向特定用户发送通知
问题描述
我在处理 Django 项目(创建和安排会议)时有点卡住了。我需要你的帮助!
对于该项目,我想向会议创建者选择的用户发送通知(可能会弹出一个通知,因为我在注册时没有实施电子邮件)。他们第一次登录时会收到通知。我查看了 Django 的消息传递框架,但似乎他们没有我正在寻找的方法。我对 Django 也很陌生,所以我真的需要你的帮助!任何建议,将不胜感激!
解决方案
您需要一个识别通知的模型。
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)
您可以在应用程序中的任何位置为用户创建许多通知。
如果您需要在任何页面上显示它们,最好将它们拉到上下文处理器中。如果它仅在特定页面上,我会将它们添加到该视图的模板渲染上下文中。
至于将它们标记为已读,您需要做出决定。您可以选择在将它们呈现给用户时将它们标记为已读,这与您在上述任何一种情况下拉取它们同时发生。或者您可以强制用户关闭它们,然后将其标记为已读。如果您这样做,您将需要一个带有通知 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)
这样,您可以拥有一个具有文本(或创建者)等属性的通知实例。然后具有通知用户特定的属性,例如该特定用户是否已阅读/看到通知。编辑:我重新阅读了您的问题,它说要向多个用户发送通知。在那种情况下,这样的事情可能会更好。
推荐阅读
- pandas - 如何访问熊猫中删除的值?
- vba - Outlook vba 读取邮件 RTFbody 失败并出现错误“未实现”
- c++ - 仅在信号上结束的自定义 std::thread
- c++ - C++ 中带有 const 参数的 std::variant
- sympy - Sympy:两个符号列表的 sumproduct
- flutter - 使用默认应用程序启动文件,但在颤动中标记为 READY ONLY
- html - 锚点不包含文本
- sql - 如何编写子查询来优化性能?
- r - 使用 foverlaps 截断剧集
- python - 分区数组,使得所有子数组的总和应该被 K 整除,并且每个子数组的长度应该 >=2 或 <=4。Python会很棒