1

これは私のコードです:

    print """\
<form method="post">
    Please enter Viewer Type:<br />
<table>
"""

#Viewer Type
print "<tr><td>Viewer Type<select name=""ViewerType"">"
print """\
    <option value="C">Crowd Funding
    <option value="P">Premium
"""
#do it button

print """\
    <input type="submit" value="OK" />
"""

print """\
</form>
</body>
<html>
"""

ViewerType=form['ViewerType'].value

そして、ブラウザに提供すると、次のエラーが表示されます。

トレースバック (最新の呼び出しが最後): ファイル "/home/nandres/dbsys/mywork/James/mywork/ViewerForm.py"、> 42 行目、ViewerType=form['ViewerType'].value ファイル "/usr/lib/ python2.7/cgi.py"、541 行目、in > getitem raise KeyError、key KeyError: 'ViewerType'

42行目は私のコードの最後の行です。

エラーは実際には機能に影響を与えておらず、すべて正常に動作していますが、実際にはポップアップしたくありません。アドバイス/洞察をいただければ幸いです。

ところで、私はこれを私のコードの一番上に持っています:

import cgi
form = cgi.FieldStorage()
4

2 に答える 2

1

ページをレンダリングするためにスクリプトが最初に呼び出されたとき、form辞書は空です。dict は、ユーザーが実際にフォームを送信したときにのみ入力されます。したがって、HTMLを次のように変更します

<option value="C" selected>Crowd Funding

役に立ちません

したがって、アクセスする前に辞書をテストする必要があります。例えば、

#! /usr/bin/env python

import cgi

form = cgi.FieldStorage()

print 'Content-type: text/html\n\n'

print "<html><body>"
print """\
<form method="post">
    Please enter Viewer Type:<br />
<table>
"""

#Viewer Type
print "<tr><td>Viewer Type<select name=""ViewerType"">"

print """\
    <option value="C">Crowd Funding
    <option value="P">Premium
"""
#do it button

print """\
    <input type="submit" value="OK" />
"""

print "</table></form>"

if len(form) > 0:
    ViewerType = form['ViewerType'].value
    print '<p>Viewer Type=' + ViewerType + '</p>'
else:
    print '<p>No Viewer Type selected yet</p>'

print "</body></html>"
于 2014-10-02T08:04:33.570 に答える