2014-10-02 9 views
1

안녕하세요!KeyError in Python

Traceback (most recent call last): File "/home/nandres/dbsys/mywork/James/mywork/ViewerForm.py", >line 42, in ViewerType=form['ViewerType'].value File "/usr/lib/python2.7/cgi.py", line 541, in >getitem raise KeyError, key KeyError: 'ViewerType'

그리고 라인 (42) 내 코드의 마지막 줄입니다 : 나는 브라우저로 서비스를 제공 할 때이 오류입니다

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 

그리고, :

그래서이 내 코드입니다.

오류가 기능에 실제로 영향을 미치지 않으며 모든 것이 잘 작동하지만 실제로 나타나지 않습니다. 모든 조언/통찰력은 크게 감사하겠습니다.

, BTW 나는 내 코드의 상단이 있습니다

import cgi 
form = cgi.FieldStorage() 

감사합니다! 당신이 그것을 보여주고 싶지 않은 경우

답변

1

,부터 form DICT가 비어 있습니다. dict은 사용자가 실제로 양식을 제출할 때만 채워집니다. 그래서

<option value="C" selected>Crowd Funding 

도움을 당신의 HTML을하지 않습니다 변경.

그래서 사전에 액세스하려고 시도해야합니다. 예 :

#! /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>" 
+0

감사의 말, 저는 영감을 얻기 위해 코드를 사용하고 작동 시켰습니다. –

+0

우수! 포인트를 가져 주셔서 감사합니다. 추신. 귀하의 실제 프로그램이 누락 된 마감 태그 등으로 HTML을 제공하지 않기를 바랍니다 :) –

0

간단한 해결책 :

try: 
    ViewerType=form['ViewerType'].value 
except KeyError: 
    pass 

그것은 일 것이다 그러나 나는 당신이 당신의 코드를 디버깅하고 KeyError를을 받고 이유를 찾기 위해 추천 할 것입니다. 스크립트가 첫 페이지를 렌더링하기 위해 호출됩니다 https://wiki.python.org/moin/KeyError,

Python raises a KeyError whenever a dict() object is requested (using the format a = adict[key]) and the key is not in the dictionary.