Javascript 如何在不重新加载页面的情况下更新Django页面?

Javascript 如何在不重新加载页面的情况下更新Django页面?,javascript,python,ajax,django,Javascript,Python,Ajax,Django,我的Django应用程序显示数据库中的数据。此数据在没有用户干预的情况下(即在幕后)更改。每当它改变,我想网页更新,而不是一个完整的页面重新加载更改的部分 显然,我想到了AJAX。最初加载页面时(或手动加载,稍后完全重新加载),呈现的模板加载一个运行window.onload=update(“all”)、update(…)的JavaScript,然后触发许多XMLHTTPRequests,这些XMLHTTPRequests再次返回转换为相应节的HTML片段的数据。一切正常。在初始页面加载时 现在

我的Django应用程序显示数据库中的数据。此数据在没有用户干预的情况下(即在幕后)更改。每当它改变,我想网页更新,而不是一个完整的页面重新加载更改的部分

显然,我想到了AJAX。最初加载页面时(或手动加载,稍后完全重新加载),呈现的模板加载一个运行window.onload=update(“all”)、update(…)的JavaScript,然后触发许多XMLHTTPRequests,这些XMLHTTPRequests再次返回转换为相应节的HTML片段的数据。一切正常。在初始页面加载时

现在我发现自己在一个Python函数中,该函数将一个新对象保存到数据库中

如何告诉浏览器运行更新(…)

我是否需要手动向映射到视图的url发出请求,该视图反过来呈现一个包含JavaScript代码的模板以运行更新(…)???天哪

我觉得我没有遵循通常的方法。 也许我只是站在问题面前


有人能帮我吗?

2021更新:使用频道:

你有两个选择

  • 使用setTimeout()进行浏览器轮询
  • 看看Comet——这是一种将数据从服务器推送到浏览器的技术
  • 以下是一篇关于两种方法的文章:

  • 只需更新数据库并等待下一个AJAX查询。这意味着它应该定期进行查询,您必须在即时性和服务器负载之间取得平衡。如果你能做一个简单的查询来验证是否有更新,这会有一点帮助。也许让检查只依赖memcached,而不是数据库

  • 使用。简而言之:客户机执行AJAX查询,请求更新。服务器发现没有更新,因此没有响应。相反,连接会保持长时间打开。最终要么更新来了,服务器最终应答,要么客户端超时并终止连接。在这种情况下,客户机应该立即重新发出查询以继续等待更新


  • 您还可以使用Websocket API。使用此API,您可以向服务器发送消息并接收事件驱动的响应,而无需轮询服务器以获得答复。

    感谢您的帮助!:-)我会查看comet,看看是否能让它工作,否则我将不得不定期进行民意调查以获得更新。两个答案都非常好,只是将任意一个设置为可接受的答案。再次感谢!:-)2021年,我将通过django频道查看web套接字: