1

我有一个非常简单的网页示例,使用 python 从 html 文件中读取。名为 led.html 的 html 如下所示:

<html>
<body>
<br>
<p>
<p>
<a href="?switch=1"><img src="images/on.png"></a>
</body>
</html>

而python代码是:

import cherrypy
import os.path
import struct
class Server(object):
    led_switch=1 
    def index(self,  switch=''):
        html = open('led.html','r').read()
        if switch:
            self.led_switch = int(switch)             
            print "Hellow world"            
        return html
    index.exposed = True

conf = {
        'global' : { 
            'server.socket_host': '0.0.0.0', #0.0.0.0 or specific IP
            'server.socket_port': 8080 #server port
        },

        '/images': { #images served as static files
            'tools.staticdir.on': True,
            'tools.staticdir.dir': os.path.abspath('images')
        },

        '/favicon.ico': {  #favorite icon
            'tools.staticfile.on': True,  
            'tools.staticfile.filename': os.path.abspath("images/bulb.ico")
        }
    }
cherrypy.quickstart(Server(), config=conf)

该网页仅包含一个名为“on”的按钮,当我单击它时,我可以看到终端上显示文本“Hello World”。我的问题是单击该按钮后如何使此文本显示在网页上的“打开”按钮上?提前致谢。

4

2 回答 2

0

你会想要使用某种模板系统。我用的是Jinja2 很棒!

代替...

html = open('led.html','r').read()

你会用...

import cherrypy
import os.path
import struct
from jinja2 import Template

class Server(object):
    led_switch=1 
    def index(self,  switch=''):
        myText = ''
        if switch:
            self.led_switch = int(switch)             
            myText = "Please Wait"
        html = Template("""
                <html>
                <body onload='setTimeout(function(){document.getElementById("UserMessage").innerHTML = "Ok! it's done"}, 5000)'>
                <br>
                <p id="UserMessage">{{ htmlText }}<p>
                <a href="?switch=1"><img src="images/on.png"></a>
                </body>
                </html>
                """)

        return html.render(htmlText=myText)
    index.exposed = True

    conf = {
        'global' : { 
            'server.socket_host': '0.0.0.0', #0.0.0.0 or specific IP
            'server.socket_port': 8080 #server port
        },

        '/images': { #images served as static files
            'tools.staticdir.on': True,
            'tools.staticdir.dir': os.path.abspath('images')
        },

        '/favicon.ico': {  #favorite icon
            'tools.staticfile.on': True,  
            'tools.staticfile.filename': os.path.abspath("images/bulb.ico")
        }
    }
cherrypy.quickstart(Server(), config=conf)

希望这可以帮助!

安德鲁

于 2012-11-12T02:08:43.407 回答
0

如果您不想使用 Jinja(以避免额外的依赖项),您仍然可以使用字符串格式:

class Server(object):
    led_switch=1 
    def index(self,  switch=''):
        myText = ''
        if switch:
            self.led_switch = int(switch)             
            myText = "Hellow world"
        html = """
         <html>
           <body>
             <br>
             <p>{htmlText}
             <p>
             <a href="?switch=1"><img src="images/on.png"></a>
           </body>
          </html>
                """
        return html.format(htmlText=myText)
于 2012-11-12T13:29:18.230 回答