我正在尝试使用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>
这将返回语法错误:
在/ / 语法无效模板追溯:文件'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网站上阅读过templator教程。我认为一旦你使用“代码:”你就会使用标准的python语法,那么一旦你从缩进的块中走出来,它应该是标准的HTML。有人可以解释这个语法,因此我的错误。
答案 0 :(得分:0)
我不知道这是否就像你在这里复制/粘贴你的代码一样,但我在这里看到了一个缩进问题。
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
应该是:
def getSwitchImg(item):
x=""
if (item=='1'):
x="<img src= '../static/switch_on.png'></img>"
else:
x="<img src= '../static/switch_off.png'></img>"
return x