使用 CherryPy 更新字段
Update field with CherryPy
我对网络开发还很陌生,所以请多多包涵。我有一个控制网页(运行 by cherrypy
),其状态值表示 python 进程 运行ning 服务器端。如何更新或推送新值?
我现在唯一的方法是:
<meta http-equiv="refresh" content="1">
更新整个页面。但是,我更喜欢只更新需要的字段。这是否可以通过 cherrypy
直接使用纯 html
轻松实现?
最佳方法是使用 javascript/websockets/ajax。
但是考虑到"server side only"的限制。我相信你能做到
使用 iframe。
import cherrypy as cp
MAIN_PAGE = """
<html>
<body>
<h1> Im the main page! </h1>
<iframe frameBorder="0" src="/frame"></iframe>
</body>
</html>
"""
FRAME_PAGE = """
<html>
<head>
<meta http-equiv="refresh" content="1">
</head>
<body>
Counter: <strong>{}</strong>
</body>
</html>
"""
class Root:
def __init__(self):
self.counter = 0
@cp.expose
def default(self):
return MAIN_PAGE
@cp.expose
def frame(self):
self.counter += 1
return FRAME_PAGE.format(self.counter)
cp.quickstart(Root())
这确实是在重新加载整个页面,但只是在框架内。为了避免在 iframe 上闪烁,您需要一些 javascript/css.
我对网络开发还很陌生,所以请多多包涵。我有一个控制网页(运行 by cherrypy
),其状态值表示 python 进程 运行ning 服务器端。如何更新或推送新值?
我现在唯一的方法是:
<meta http-equiv="refresh" content="1">
更新整个页面。但是,我更喜欢只更新需要的字段。这是否可以通过 cherrypy
直接使用纯 html
轻松实现?
最佳方法是使用 javascript/websockets/ajax。
但是考虑到"server side only"的限制。我相信你能做到 使用 iframe。
import cherrypy as cp
MAIN_PAGE = """
<html>
<body>
<h1> Im the main page! </h1>
<iframe frameBorder="0" src="/frame"></iframe>
</body>
</html>
"""
FRAME_PAGE = """
<html>
<head>
<meta http-equiv="refresh" content="1">
</head>
<body>
Counter: <strong>{}</strong>
</body>
</html>
"""
class Root:
def __init__(self):
self.counter = 0
@cp.expose
def default(self):
return MAIN_PAGE
@cp.expose
def frame(self):
self.counter += 1
return FRAME_PAGE.format(self.counter)
cp.quickstart(Root())
这确实是在重新加载整个页面,但只是在框架内。为了避免在 iframe 上闪烁,您需要一些 javascript/css.