【问题标题】:How to change HTML on clients when DB changes on server in Django如何在 Django 中的服务器上更改数据库时更改客户端上的 HTML
【发布时间】:2016-06-19 14:27:59
【问题描述】:

我正在做一个项目,其中 Django 在 Beaglebone 板上运行。 Beaglebone 通过 wifi-stick 连接到无线路由器。多个设备(计算机、智能手机)连接到无线路由器以访问 Django 应用程序。该应用程序使用 SQLite DB 来存储一些信息。每当设备访问 Django 应用程序时,都会呈现一个 HTML 页面(其中包含来自 DB 的信息)。设备可以执行更新/更改数据库中表格内容的操作。

我的问题是:如果任何连接的设备导致存储在 Beaglebone 板上的数据库发生更改,而无需手动刷新 HTML 页面,是否可以更新所有当前连接的设备上呈现的 HTML 页面?我被限制不使用另一个端口/套接字,所以我不认为事件监听器是一个选项。有人建议在 HTML 呈现的页面(使用 JS)中放置一个计时器/超时,它将不断向服务器发送请求(使用 GET/POST),服务器将发回更改的数据。但是,我认为这不是一个好主意。想象一下,有 5、6 台设备连接到服务器,不断发送请求。在我看来,这可能会导致无线网络拥塞。

任何关于如何解决此问题的想法都将不胜感激。

【问题讨论】:

    标签: html django sqlite sockets


    【解决方案1】:

    试试 JQuery。当您检测到数据库中会影响您的客户端的更改时,您可以不断更新客户端的视图。只有这样,您才会向客户端发送响应,该响应将更改视图中的数据,但不会更改整个页面。这将防止客户不得不重新加载他们的页面。

    【讨论】:

    • 感谢@Bob 的回答。客户端是否必须请求服务器响应服务器端所做的任何更改?如果是这样,是不是和不断ping服务器一样?
    • 或者有没有一种方法可以让服务器在服务器端发生更改时通知客户端?这将消除客户端发送请求的需要。
    • 是的,因此您可以在服务器发现数据库更改相关时从服务器发送响应。然后,由于套接字总是需要监听变化,它会听到它。就 AJAX 与 JQuery 的工作而言,我认为它不会持续 ping 服务器。如果您对此感到好奇,我建议您研究一下通知的工作原理。我认为这个想法是进程休眠,直到另一个进程唤醒它并告诉它它准备好让休眠进程做一些工作。
    猜你喜欢
    • 2021-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多