如何链接 django 信号和 ajax

Posted

技术标签:

【中文标题】如何链接 django 信号和 ajax【英文标题】:how to link django signals and ajax 【发布时间】:2021-12-13 02:40:40 【问题描述】:

我正在尝试使用物联网设备实现数据收集系统。 目前,数据传输是通过使用 django REST 框架的 API 进行的。效果很好 我想知道一些方法,以便在接收数据时生成触发器,并使用 ajax 刷新用户网站上的这些触发器。也许使用信号,但不知道如何将该信号与 ajax 绑定。 我对javascript有点新手。 我应该遵循什么路径?

【问题讨论】:

【参考方案1】:

您可能想要使用模型信号。但这仅适用于您尝试将某些内容保存到数据库中的情况。

【讨论】:

我喜欢接收数据(这是通过 API 工作的),以及使用 ajax 刷新页面。有可能吗? 是的...抱歉回复晚了。【参考方案2】:

Ajax 请求只是一个普通的 HTTP 请求。请求被发送到普通视图。 Django 信号由发送方和接收方连接。我不确定在您的情况下发送了什么,但 Django 文档中使用的一个主要示例是为模型对象提供 post_save 信号。如果一个对象(来自模型)调用 save 或被创建,则发送一个信号。因此,如果您在处理视图逻辑时保存对象,则信号将运行。

这就是你要找的吗?如果您正在考虑异步执行某些操作,以便可以立即将响应发送回客户端并稍后处理您想要的任何内容,请查看 celery 或 Django-q。

【讨论】:

我可以在接收 API 中发送一个信号,但我不知道如何将此信号链接到 ajax 请求或视图以使用新数据刷新部分页面。我是我的概念错了。 我喜欢用户查看页面,如果接收到新数据,页面的一部分将刷新。 您可以使用 Javascript 手动刷新页面。如果您需要刷新页面,那么在您的 HTTPResponse 对象中(您可以使用 Django 中间件操作数据),您可以修改数据以包含一些内容,告诉您的 JS 使用 location.reload() 手动刷新页面。

以上是关于如何链接 django 信号和 ajax的主要内容,如果未能解决你的问题,请参考以下文章

Django信号

如何在单个请求中使用 django 信号将数据保存在(用户和配置文件)表中?

如何从 django 信号返回数据?

Django:如何使用 pre_save 信号更新模型实例?

django 信号是不是也包含在 transaction.atomic 装饰器中?

如何防止灯具与 django post_save 信号代码冲突?