有没有办法用 Python 3 更新网页上的某些对象 'live'?

Is there a way to update certain objects 'live' on a webpage with Python 3?

我正忙于我自己的 http 处理程序,我已经设法用我自己编写的数据库处理程序制作了一个整洁的网站。

但是,是否可以通过某种方式实时更新网页上的某个对象?例如:

<h1>Hello</h1>

收件人:

<h1>Bye</h1>

直播?因为写东西到网页使用

self.wfile.write('<h1>Hello</h1>')

是否有例如 self.wfile.change(不存在)可以更改写入用户的特定对象?

我知道如何非实时更新数据(因此通过刷新网页),但我真的希望用户停留在某个网页上并仍然更新数据...

... 没有 javascript 或 php 但 Python 3

不,你不能。事实上,数据已经发送到客户端,并且没有办法在服务器端执行这样的替换。您需要指示客户端执行上述更新,Javascript 是您唯一现实的选择。

如果您想坚持使用 Python,您可以探索 Brython 等项目,它允许您执行 Python 客户端的子集,但请记住大多数在线学习和帮助资源都集中在 Javascript.

您在 PHP 中可以做的任何事情在 Python 3 中也可以做,只要您的网络服务器支持 Python 个应用程序。

有两种方法可以更改页面的一部分。一种方法是使用 JavaScript 重写 DOM。这很好,除非您已经有很多观众在他们的浏览器中关闭了 JavaScript。另一种方法是将页面划分为框,每个框包含一个单独的 HTML 文档和一个单独的 URL,并在主页中使用 <iframe seamless> 元素引用每个框。然后你可以让每个 <iframe> 定期刷新自己。

seamless.html:

<!DOCTYPE HTML><html><head><title>SO Example</title><style type="text/css">
iframe[seamless] { display: block; width: 100%; border: 0 }
</style></head><body>
<iframe seamless src="headerbar.html" style="height: 3rem"></iframe>
no main refresh 
<iframe seamless src="body.html" style="height: 20rem"></iframe>
</body></html>

headerbar.html:

<!DOCTYPE HTML><html><head>
<meta http-equiv="refresh" content="5"> <!-- change this to how often to pull the changes -->
<style type="text/css">
html, body { overflow: hidden } /* this avoids a scrollbar in parent page's box */
h1 { margin: 0; font-size: 200% } /* explicit font-size to fit height of parent page's box */
</style></head><body>
<h1>Inner refresh!</h1>
</body></html>

body.html:

<!DOCTYPE HTML><html><body>
Lorem ipsum
</body></html>