根据 Django 通道中的数据库事件向用户发送数据

Posted

技术标签:

【中文标题】根据 Django 通道中的数据库事件向用户发送数据【英文标题】:Send data to users base on database event in Django channels 【发布时间】:2019-03-17 21:47:11 【问题描述】:

我在 Django 中有一个应用程序,一些用户可以添加和更新数据。这些用户使用 Django 标准表单和视图添加或更新数据。

我想实现另一个应用程序,当用户在数据库中更新或创建数据时向所有用户发送新数据。我阅读了可以处理 Web 套接字的 Django 通道,但我在 Django 通道中找不到有关服务器或数据库事件的信息。

那么当数据库事件发生时如何向用户发送数据呢?

【问题讨论】:

你能添加你的代码或者你目前已经实现的任何东西吗? @Junia 。我还没有这个应用程序的任何代码。我想先找到最好的方法。 【参考方案1】:

您可以使用信号来检测 Django 中的数据库事件。看看这里解释的信号:https://docs.djangoproject.com/en/2.1/topics/signals/

基本上,您将按照以下方式做一些事情:

@receiver(post_save, sender=ModelClass)
def my_model_save(sender, instance, **kwargs):
     # this code will be executed after an instance of ModelClass is saved.
     Group(rate_key).send(
            "text": "my message"
     )

【讨论】:

以上是关于根据 Django 通道中的数据库事件向用户发送数据的主要内容,如果未能解决你的问题,请参考以下文章

如何根据 Firebase 数据库中的条目向我的 android 应用发送通知? [关闭]

Django - 通过 websocket 在事件上重复发送 API 调用结果(REST 框架 + 通道)

将数据从 Python Web 套接字客户端发送到 Django 通道

使用JavaScript Onclick Event将数据传递给Django中的views.py?

关于事件驱动拓扑中的中介者

Django 通过 websocket 向所有客户端发送事件