Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
数据库更改时在Django中重新加载HTML表_Html_Ajax_Django_Database_Web Applications - Fatal编程技术网

数据库更改时在Django中重新加载HTML表

数据库更改时在Django中重新加载HTML表,html,ajax,django,database,web-applications,Html,Ajax,Django,Database,Web Applications,简单地说,我有一个用Django模板实现的html表,它显示了我存储在数据库中的一些信息。我希望此(html)表保持最新状态,并在数据库更改时自动更新。我环顾了四周,但没有找到多少关于这个主题的文献。最好的方法是每隔一段时间进行一次Ajax调用来更新表吗?如果是,两次通话之间的标准时间是多少 非常感谢,如果需要更多信息,请告诉我 您可能应该使用django信号: 因此,每次数据库更改时都可以更新模板。 例如,可以使用每次调用save()方法时发送的post_save信号。 一种更简单的方法是以可

简单地说,我有一个用Django模板实现的html表,它显示了我存储在数据库中的一些信息。我希望此(html)表保持最新状态,并在数据库更改时自动更新。我环顾了四周,但没有找到多少关于这个主题的文献。最好的方法是每隔一段时间进行一次Ajax调用来更新表吗?如果是,两次通话之间的标准时间是多少


非常感谢,如果需要更多信息,请告诉我

您可能应该使用django信号: 因此,每次数据库更改时都可以更新模板。 例如,可以使用每次调用save()方法时发送的post_save信号。
一种更简单的方法是以可选择的速率刷新模板,尽管它没有经过优化。

基本上,您自己提出的解决方案称为长轮询。Django无法做到这一点,但有几种附加解决方案,即。在客户端通过一些巧妙的$.ajax调用来实现这一点并不难

更彻底的解决方案不是直接使用长轮询,而是仅将其用作其他服务器端启动事件(如WebSocket和服务器发送事件(SSE))的后备。然而,这些都很难实现,因为WSGI规范没有提供这些。您必须有一个在WSGI之外处理此问题的Web服务器(Tornado浮现在脑海中),或者有另一个Web服务器(可能是node.js)或者像gevent这样的事件处理程序来处理服务器通过WebSockets/SSE发送的消息

io提供了一种从WebSocket到长轮询的回退,您需要类似于Django的东西来完成工作


关于socket.io、django和gevent有一篇相当不错的博文。

这不可能奏效。服务器端信号如何在浏览器中刷新页面?非常感谢。正如您可能知道的,我对web开发不感兴趣。这应该足以为我指明正确的方向。谢谢