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 になるはずだと思いました。誰かがこの構文を説明してくれるので、私のエラーです。