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

时间:2015-02-25 19:42:35

标签: python http handler

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

但是,是否有可能在网页上更新某个对象?例如:

<h1>Hello</h1>

要:

<h1>Bye</h1>

LIVE?因为写一些东西到网页使用

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

有没有例如self.wfile.change(不存在)可以改变写入用户的某个对象?

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

...没有javascript或php但 Python 3

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

只要您的Web服务器支持Python应用程序,您可以在Python 3中执行任何操作,只要您的Web服务器支持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>