我正在嘗試編寫一個Web界面來開始錄製或播放過程。我使用web.py,並在模板目錄中有一個控制python腳本(code.py)和三個模板(main.html,record.html和playback.html)。主頁面顯示了一個播放窗體和一個記錄窗體,每個窗體都有一個按鈕,當按下該按鈕時,該窗體將輸入的數據載入相關模板。我希望能夠取消這些過程並返回到主屏幕,所以我有一個包含「取消」按鈕的表單,該按鈕在記錄和回放模板中都呈現。但是,當我按下這個按鈕。什麼都沒發生。任何想法,將不勝感激。web.py中的順序格式
code.py:
import web
from web import form
import os
import glob
import socket
render = web.template.render('templates/',
globals={'os':os, 'glob':glob, 'form':form})
urls = ('/*', 'index')
recordForm = form.Form(
form.Dropdown(name = 'rmode',
description='Recording Mode:',
args=<a list of tupels>),
form.Button('Record'),
)
os.chdir("/home/stingray/Documents/")
playbackForm = form.Form(
form.Dropdown(name='pmode',
description='Playback Mode:',
args=<a list of tupels>),
form.Dropdown(name='pfile',
description='Playback File:',
args=[(file,file) for file in glob.glob("*.*")]),
form.Button('Playback'),
)
cancelForm = form.Form(
form.Button('Cancel'),
)
class index:
def GET(self):
r = recordForm()
p = playbackForm()
return render.main(socket.gethostbyname(socket.gethostname()),
'Not Present',r,p)
def POST(self):
formData = web.input()
c = cancelForm()
try:
return render.record(formData.rmode,c)
except AttributeError:
return render.playback(formData.pmode,formData.pfile,c)
if __name__ == "__main__":
app = web.application(urls, globals())
app.run()
main.html中
$def with (ipAddress,linkStatus,recordForm,playbackForm)
<html>
<title>
Test Bridge Control - Main
</title>
<body>
<center>
<b>Test Bridge Control</b><br><br>
<form method="POST">
$:recordForm.render()
</form>
<br>
<form method="POST">
$:playbackForm.render()
</form>
<br>
Test bridge IP address: $ipAddress<br>
Link status: $linkStatus<br>
</center>
</body>
</html>
record.html
$def with (mode,cancelForm)
<html>
<title>
Test Bridge Control - Record
</title>
<body>
<center>
Recording in mode $mode <br>
<form method="POST">
$:cancelForm.render()
</form>
</center>
</body>
</html>
而且playback.html非常相似record.html。請注意,即使我沒有驗證表單數據,我仍然可以訪問它 - 表單條目出現在呈現的record.html和playback.html中。
[編輯]應該強調的是,搜索類似的問題還沒有成功;沒有人似乎試圖一個接一個地使用多種形式(或者如果他們是,他們成功了)。
[編輯]沒有出現在Fedora的運行在Firefox 18中的問題,最初見於IE9在Windows 7中,這可能是它會在工作。