1

Pythonを使用してhtmlファイルから読み取った非常に単純なWebページの例があります。怒鳴るのように 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)

Web ページには「on」というボタンが 1 つしかなく、クリックすると端末に「Hello World」というテキストが表示されます。私の質問は、そのボタンをクリックした後、「オン」ボタンの上にこのテキストを Web ページに表示する方法です。前もって感謝します。

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 に答える