0

Webpy を使用して Web アプリケーションを作成しようとしています。私のアプリケーションは、イーサ オフまたはオンの出力に関する情報を取得します。画像を使用して「オン」ボタンまたは「オフ」ボタンを表示したいと思います。Webpy テンプレートに送信されるデータは、出力のディクショナリ (キーは出力を定義します) と値 (文字列型) で、値はオンの場合は「1」、オフの場合は「0」です。私が最初に考えたのは、テンプレート内に関数を記述して、次のような値に基づいて画像ファイルを返すことでした。

template_tester_simple.py:

import web
render = web.template.render('templates/')
urls = ('/', 'index')
template_tester_simple = web.application(urls, globals())


class index: 
    def GET(self):
        return render.test_func(data)


def add_data():
    data = {'currSet':'75','currTemp':'60','currMode':'Off',
'Cool':'1', 'Heat':'1', 'RevValve':'1', 'EmHeat':'1','Fan':'1',}            
    return data        

data = add_data()
if __name__=="__main__":
    web.internalerror = web.debugerror
    template_tester_simple.run()

そして私のtest_func.htmlテンプレート:

$def with (data)

<!DOCTYPE html>
    <html>
    <head>
        <title>Test</title>
    </head>
    $code:
        def getSwitchImg(item):
            x=""
        if (item=='1'):
            x="<img src= '../static/switch_on.png'></img>"
        else: "<img src= '../static/switch_off.png'></img>"
        return x

<body>
        <ul>
                <li><strong>Cooling</strong><p>
                $getSwitchImg($data['Cool'])
                </p></li>
                            <li><strong>Reversing Valve</strong><p>
                $getSwitchImg($data['RevValve'])
                </p></li>

        </ul>
</body>

これは、構文エラーを次のように返します。

at / 無効な構文 テンプレート トレースバック: ファイル 'templates/test_func.html'、23 行目 なし (test_func.html、23 行目)

構文エラーを把握できませんでした。これは、順序付けられていないリストの終了タグである行をリストします。これは、すべての python コードを過ぎているため意味がありません。だから、私が理解していないWebPyテンプレートシステムの何かに違いありません。ファンクション ブロックが正しく「閉じられていない」のですか? 欲求不満から、同じ template_tester_simple.py を使用して、テンプレートを次のように変更しました。

$def with (data)

<!DOCTYPE html>
    <html>
    <head>
        <title>Test</title>
    </head>

    <body>
            <ul>
                <li><strong>Cooling</strong>
            $if data['Cool'] == '1':
                <img src="../static/switch_on.png" height="15px" width="40px"></img>
            $else:
                <img src="../static/switch_off.png" height="15px" width="40px"></img>
          </li>
            <li><strong>Heating</strong>
            $if data['Heat'] == '1':
                <img src="../static/switch_on.png" height="15px" width="40px"></img>
            $else:
                <img src="../static/switch_off.png" height="15px" width="40px"></img>
          </li>
           </ul>
        </body>

これは機能しますが、使用したい関数を定義していません。基本的に同じコードを何度もコピー/ペーストする必要があります。このプロジェクトをさらに進めていく中で、スイッチをさらに追加して、デジタル出力を増やす予定です。最初のテンプレート コードを機能させることができれば、アプリの拡張がずっと簡単になります。また、WebPy テンプレート内の関数に関連付けられた構文を理解したいと考えています。Webpy Web サイトのテンプレート チュートリアルを読みました。「code:」を使用すると、標準の python 構文に移動し、インデントされたブロックから出ると、標準の HTML になるはずだと思いました。誰かがこの構文を説明してくれるので、私のエラーです。

4

1 に答える 1