使用 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.