0

記録または再生プロセスを開始するための Web インターフェイスを作成しようとしています。私は web.py を使用しており、テンプレート ディレクトリに 1 つの制御 Python スクリプト (code.py) と 3 つのテンプレート (main.html、record.html、playback.html) があります。メイン ページには、再生用のフォームと記録用のフォームが表示されます。それぞれにボタンがあり、このボタンを押すと、入力されたデータを含む関連するテンプレートが読み込まれます。これらのプロセスをキャンセルしてメイン画面に戻りたいので、記録テンプレートと再生テンプレートの両方でレンダリングされる「キャンセル」ボタンを含むフォームを用意しました。ただし、このボタンを押すと。何も起こりません。どんなアイデアでも大歓迎です。

コード.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 では問題ではないようです。もともとは Windows 7 の IE9 で見られたもので、おそらく動作する必要があります。

4

1 に答える 1