为什么我不能使用 Django Signals 重新加载 HTML 页面
Why I cannot use Django Signals to reload HTML page
我想在保存数据库中的特定 table 时重新加载或刷新 HTML 页面(块内容)。我的第一个想法是使用 Django Signals(post-save() 方法)。此触发器会触发视图或呈现 html 模板。但我读到这是不可能的 and/or 这不是最佳做法。
为什么不能为此目的使用 Django 信号?最佳做法是什么?除了避免 AJAX 请求之外,您还知道另一种方法吗?
非常感谢您的回答。
这是不可能的原因是因为 Django 信号只是一个钩子,它在信号被触发时运行一个函数。这不会改变您的网页仍在使用无状态 HTTP 的事实。这意味着一旦您的页面由服务器呈现然后发送到您的客户端(Chrome、IE 等),连接就基本上关闭了。
为了保持开放的通道,您可以使用一种叫做 WebSockets 的东西来保持连接,就像@schillingt 提到的那样。这将允许您在用户页面上获得实时更新。
Django Channels docs: https://channels.readthedocs.io/en/latest/
我想在保存数据库中的特定 table 时重新加载或刷新 HTML 页面(块内容)。我的第一个想法是使用 Django Signals(post-save() 方法)。此触发器会触发视图或呈现 html 模板。但我读到这是不可能的 and/or 这不是最佳做法。
为什么不能为此目的使用 Django 信号?最佳做法是什么?除了避免 AJAX 请求之外,您还知道另一种方法吗?
非常感谢您的回答。
这是不可能的原因是因为 Django 信号只是一个钩子,它在信号被触发时运行一个函数。这不会改变您的网页仍在使用无状态 HTTP 的事实。这意味着一旦您的页面由服务器呈现然后发送到您的客户端(Chrome、IE 等),连接就基本上关闭了。
为了保持开放的通道,您可以使用一种叫做 WebSockets 的东西来保持连接,就像@schillingt 提到的那样。这将允许您在用户页面上获得实时更新。
Django Channels docs: https://channels.readthedocs.io/en/latest/