当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何在没有页面重新加载的情况下更新Django页面?》经验,为你挑选了2个好方法。

我的Django应用程序显示数据库中的数据.该数据在没有用户干预的情况下改变,即在幕后.每当它发生变化时,我希望网页更新已更改的部分,而无需重新加载整页.

很明显,AJAX会浮现在脑海中.当最初加载页面(或手动,稍后完全重新加载)时,呈现的模板加载运行window.onload = update("all")的JavaScript,update(...)依次触发多个XMLHTTPRequests它再次返回转换为相应部分的HTML片段的数据.一切正常.在初始页面加载.

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

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

我是否需要以某种方式手动向映射到视图的URL发出请求,而该视图又呈现包含JavaScript代码的模板以运行更新(...)??? 天啊!

我觉得我不遵循通常的做法.也许我只是站在问题面前关闭.

谁能帮我 ?



1> Lou Franco..:

你有两个选择

    使用setTimeout()进行浏览器轮询

    查看Comet - 这是一种将数据从服务器推送到浏览器的技术.

这是一篇关于Django Comet的文章



2> Javier..:

两种方法:

    只需更新数据库并等到下一个AJAX查询.这意味着它应该定期进行查询,你必须在即时性和服务器负载之间取得平衡.如果你可以做一个便宜的查询来验证是否有更新,它会有所帮助.也许让检查只依赖于memcached而不是去DB

    用彗星.简而言之:客户端执行AJAX查询以请求更新.服务器看到没有更新,所以它没有回答.相反,连接保持打开很长时间.最终,更新到来,服务器最终应答,或者客户端超时并终止连接.在这种情况下,客户端应立即重新发出查询以继续等待更新.

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有