【问题标题】:Reloading HTML table in Django when db changesdb更改时在Django中重新加载HTML表
【发布时间】:2015-02-23 05:51:42
【问题描述】:

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

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

【问题讨论】:

    标签: html ajax django database web-applications


    【解决方案1】:

    基本上您自己提出的解决方案称为长轮询。 Django 不能开箱即用,但有几个附加解决方案,即here。在客户端通过一些巧妙的 $.ajax 调用自己动手做起来并不难。

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

    Socket.io 提供从 WebSockets 到长轮询的后备方案,您需要像 this 这样的东西才能在 Django 端完成工作。

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

    【讨论】:

    • 非常感谢。你可能会说,我对网络开发并不感兴趣。这应该足以为我指明正确的方向。谢谢
    【解决方案2】:

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

    【讨论】:

    • 这不可能。服务器端信号如何导致浏览器中的页面刷新?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 2019-01-28
    • 2017-10-13
    • 1970-01-01
    • 2013-10-06
    相关资源
    最近更新 更多