首页 > 解决方案 > 如何使用 django 信号刷新特定页面

问题描述

我正在创建一个电子商务网络应用程序,并且我想在用户下订单时更新我的​​管理页面。经过研究,我发现了 Django 信号,但这似乎很混乱。这背后的想法是,当用户下订单时,我希望刷新管理页面并显示最新更新。我尝试了 ajax,但 javascript 只能用于当前打开的页面。任何人都可以通过这种方式帮助我处理 usibg django 信号吗?

标签: django

解决方案


如果您的想法是刷新用户在浏览器中查看的管理页面,我认为您有点误解。网站访问者查看的页面是根据浏览器的要求检索的。用户可以刷新页面,或者页面脚本可以在计时器上自动刷新(这不是一个很好的解决方案,但很容易)。

Django 无法让浏览器更新页面。

信号可以让django在后端做点什么,但不能解决浏览器负责的问题。

有一种技术旨在允许服务器将内容推送到浏览器:websockets。

如果您使用 websockets(Django 相当新的内置支持称为 Channels ( https://channels.readthedocs.io/en/stable/ )),那么您可以将内容推送到浏览器,页面上的接收脚本将用它做点什么。这是一项非常强大的技术,但如果您从头开始,则需要几个小时的学习曲线。

最近我遇到了这个前端库,它试图让浏览器变得简单:https ://htmx.org/docs/

但是您仍然必须处理运行 websocket 服务器并学习如何将消息发送到 websocket。然而,在它结束时你会觉得自己像个超级英雄,所以就是这样。


推荐阅读